2013-11-27 4 views
0

함수 func() 내부의 다음 명령문에서 변수 이름 (예 : '사전')을 찾으려고합니다. malloc의 메모리 영역을 가리킨다.할당의 왼쪽 변수를 오른쪽 함수 호출의 반환 값과 일치 시키십시오.

Void func() { 
    uint64_t * dictionary = (uint64_t *) malloc (sizeof(uint64_t) * 128); 
} 

다음은 할당의 시작 주소와 크기를 기록 할 수 malloc()을 계측. 그러나 할당 할 변수 '사전'에 대한 지식이 없으면 컴파일러 측의 모든 기능을 사용하여 컴파일러를 수정하지 않고이 문제를 해결할 수 있습니다.

내가 생각해 보았던 한 가지 방법은 '사전'변수와 'malloc'함수가 하나의 소스 코드 줄 또는 서로 나란히있는 기능을 사용하는 것입니다. 왜소는 줄 정보를 제공합니다.

답변

0

Clang과 LLVM으로 할 수있는 한 가지는 디버그 정보로 코드를 내 보낸 다음 malloc 호출을 찾습니다. 이것은 LLVM 값에 할당되며 디버그 정보 메타 데이터를 통해 원본 C/C++ 소스 코드로 추적 할 수 있습니다 (즉, 최적화없이 컴파일 된 경우).