우리는 거대한 바이너리 가지고있는 네임 스페이스 예에 정의 된 상수 말을 가지고 header1.h :리눅스 C++ 바이너리 네임 스페이스
namespace One
{
namespace Two
{
const String TEST_DATE_TIME = "DDMMYYYY"; // Line number say 32
// ................ Around 2500 such constants ..........
}
}
문제는 그 우리는 장비 (-finstrument-기능과 _cyg와 바이너리를 실행할 때
__tcf_2275,header1.h: 32
가 실행 중에 컴파일러는 네임 스페이스 상수를 만드는 시간을 보내는 것을 의미합니까 - 그런데 왜 : 그들은 데이터 세그먼트에 선언되지 않습니다 - * 우리는 우리의 보고서에서 다음과 같은 방법 참조) 기능? 네임 스페이스에서 상수를 선언하는 샘플 파일에서 동일한 동작을 보지 못합니다. 또한
-
nm a.out| grep __tcf_ | more
000000000807acf8 t __tcf_1234
000000000807ad60 t __tcf_1456
............................
000000000816ddd0 t __tcf_1125
............................
addr2line -Cfe a.out 0x807acf8 0x807ad60
__tcf_2275
header1.h:2322
__tcf_2274
header1.h:2321
는 확실히 우리는 실행 중에 네임 스페이스 상수는 컴파일러에 의해 구성되어 있음을 명시 할 수 있습니다. 어떻게하면 i) 실행 오버 헤드를 줄이기 위해 그들을 줄일 수 있습니까? 그리고 ii) 't'섹션으로 정의 된 _ tcf은 왜 있습니까?
C++ 심볼 이름을 디 앵글 링하려면'nm -C a.out'을 사용해야합니다. –