gpt4 book ai didi

memory-leaks - valgrind - 在共享库中查找内存泄漏

转载 作者:行者123 更新时间:2023-12-04 02:07:58 25 4
gpt4 key购买 nike

我需要知道如何找出共享库中的内存泄漏,该共享库将被加载到发布二进制文件中。我的意思是我用 -g 选项构建的共享库,但加载共享库的二进制文件不是用 -g 选项构建的。

我得到的泄漏报告如下。

==739==    at 0x4A05809: malloc (vg_replace_malloc.c:149)
==739== by 0x84781B1: ???
==739== by 0x87507F5: ???
==739== by 0x874CF47: ???
==739== by 0x874E657: ???
==739== by 0x874F7C2: ???
==739== by 0x8779C0C: ???

请让我知道如何从共享库中获取泄漏的堆栈跟踪?

最佳答案

假设泄漏确实来自您的共享库,那么我认为问题不在于主可执行文件中缺少调试。

您的问题更有可能是可执行文件通过调用 dlclose 卸载共享库。在它完成之前。这意味着当 valgrind 开始检查泄漏时,库的所有符号信息都消失了,因为库不再加载。

如果您可以重建可执行文件,那么最简单的解决方案可能是暂时停止调用 dlclose以便库一直加载到最后。

如果您不能这样做,请尝试使用 LD_PRELOAD保持库加载,像这样:

LD_PRELOAD="/path/to/library.so" valgrind my-executable

这有望诱使动态链接器在库关闭后保持加载。

关于memory-leaks - valgrind - 在共享库中查找内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12621418/

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