我使用以下参数运行Valgrind:
--leak-check=full --show-reachable=yes --leak-resolution=high --num-callers=100 --trace-children=yes
在内存泄漏日志中,我看到一些错误消息,其中包含完整的堆栈跟踪到主程序,但有些消息如下所示:
==3956== 1,999,140 (68,796 direct, 1,930,344 indirect) bytes in 5,733 blocks are definitely lost in loss record 8,842 of 8,845
==3956== at 0x4022AB8: malloc (vg_replace_malloc.c:207)
==3956==
如何获取这些错误的完整堆栈跟踪?
我遇到了类似的问题,Valgrind 仅在堆栈跟踪中显示库文件。我设法通过指定
--num-callers=500
来解决这个问题,这使得它显示到 main.cpp 的完整堆栈跟踪。 (--num-callers
的默认值为 12,对于某些库来说太低了)。