gpt4 book ai didi

memory-leaks - 如何从Valgrind获取完整的调用堆栈?

转载 作者:行者123 更新时间:2023-12-03 12:50:25 24 4
gpt4 key购买 nike

我使用以下参数运行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==

如何获得这些错误的完整堆栈跟踪?

最佳答案

获取完整的堆栈跟踪信息将需要所有可能与泄漏有关的库/可执行文件的调试符号(并在--num-callers设置的限制内)。

如果您自己构建它们中的任何一个,则需要在gcc中指定-g标志(或在任何其他编译器中指定相关标志)。

请注意,并非万无一失,并且有时可能会漏漏或无法提供完整的堆栈跟踪(尤其是在使用线程或复杂的class实现的情况下)。

对于没有调试信息的库,堆栈跟踪将在该库处停止。

对于免费工具来说,非常擅长于其功能,但是有一个原因,例如IBM可以大笔出售内存配置文件。

关于memory-leaks - 如何从Valgrind获取完整的调用堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11242795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com