如何告诉valgrind使用二进制名称(可执行文件,共享库)预先添加堆栈帧?

时间:2016-08-26 15:27:39

标签: 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使用二进制名称(可执行文件,共享库)预先添加堆栈帧?

1 个答案:

答案 0 :(得分:1)

无法指示valgrind始终输出对象名称。 如果valgrind找到源位置,则它不输出对象名称。

总是输出对象名称的更改无关紧要:

在debuginfo.c中添加以下标记的行(未经测试)应该可以正常工作

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