gpt4 book ai didi

c - 在应用程序退出之前关闭的共享库上使用 Valgrind

转载 作者:行者123 更新时间:2023-11-30 14:41:59 26 4
gpt4 key购买 nike

如何查找在第三方应用程序中动态加载的共享库 (.so) 中的内存泄漏,该库的代码不可用(但已使用调试信息构建)?问题可能是共享库在应用程序退出之前被 dlclose'd,并且 Valgrind 不再拥有应用程序的调试信息,并将内存泄漏的地址报告为问号。

目前已尝试以下方法:

  1. 使用 clang 和 gcc 构建带有调试信息的项目编译器
  2. 运行应用程序之前LD_PRELOAD共享库

有什么办法可以让 Valgrind 检测到调试符号吗?

最佳答案

以下是 valgrind 3.14 新闻的摘录:

  • The new option --keep-debuginfo=no|yes (default no) can be used to retain debug info for unloaded code. This allows saved stack traces (e.g. for memory leaks) to include file/line info for code that has been dlclose'd (or similar). See the user manual for more information and known limitations.

因此,只需使用 --keep-debuginfo=yes 就应该显示泄漏的正确堆栈跟踪。

关于c - 在应用程序退出之前关闭的共享库上使用 Valgrind,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54657049/

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