2016-08-26 3 views
0

내가 얻을 :valgrind에게 스택 프레임 앞에 바이너리 이름 (실행 파일, 공유 라이브러리)을 추가하는 방법은 무엇입니까?

==830== at 0x4CD40DC: DebugSyslogHandlerFunc(DebugContext const&) (DebugSyslogHandler.cpp:202) 
==830== by 0x6A2F3: AssertHandler::~AssertHandler() (Debug.hpp:1219) 
==830== by 0x77F03: CircularQueue::capoffData(int) (CircularQueue.hpp:1216) 

내가 원하는 :

==830== at 0x4CD40DC: /usr/local/lib/shared_lib1.so.0: DebugSyslogHandlerFunc(DebugContext const&) (DebugSyslogHandler.cpp:202) 
==830== by 0x6A2F3: /usr/local/lib/shared_lib2.so.0: AssertHandler::~AssertHandler() (Debug.hpp:1219) 
==830== by 0x77F03: /usr/local/bin/my_exe: CircularQueue::capoffData(int) (CircularQueue.hpp:1216) 

는 (모든 주소 뒤에 바이너리 경로와 이름이있다).
그런 것을 찾지 못했습니다.

valgrind에게 스택 프레임 앞에 바이너리 이름 (executable, shared lib)을 추가하는 방법은 무엇입니까?

답변

1

항상 valgrind가 객체 이름을 출력하도록 지시 할 방법이 없습니다. valgrind가 소스 위치를 찾으면 객체 이름을 출력하지 않습니다.

항상 출력 개체 이름에 대한 변경은 그러나 간단하다 :

내가이 테스트 한

if (know_srcloc) { 
    if (know_objname) { // Add from here 
     APPEND(" (in "); // 
     APPEND(buf_obj); // 
     APPEND(")");  // 
    }      // Till here 
    APPEND(" ("); 
+0

작동합니다 debuginfo.c에서 아래 표시된 라인 (안된를) 추가. 그대로 완벽하게 작동합니다. 고마워요, 박사님! –