【问题标题】:No symbols for valgrind massif dlclose()valgrind massif dlclose() 没有符号
【发布时间】:2018-10-18 04:11:38
【问题描述】:

massif 不显示 lib 中的函数的任何函数名称,并且此 lib 由 dlclose() 关闭。

如果我删除 dlclose(),然后运行重新编译和执行程序,我可以看到这些符号。有没有办法在不改变源代码的情况下知道函数名?

【问题讨论】:

标签: memory valgrind memory-profiling massif


【解决方案1】:

新版本的 valgrind (3.14) 有一个选项,指示 valgrind 保留 dlclose'd 库的符号:

--keep-debuginfo=no|yes   Keep symbols etc for unloaded code [no]
                          This allows saved stack traces (e.g. memory leaks)
                          to include file/line info for code that has been
                          dlclose'd (or similar)

但是,massif 不使用此信息。

您可以通过以下方式获得可用的堆报告配置文件:

valgrind --keep-debuginfo=yes --:xtree-leak=yes

然后使用例如可视化堆内存kcachegrind。

【讨论】:

  • 我试过3.14版本。我使用 valgrind --tool=massif --keep-debuginfo=yes ,但在地块报告中仍然看不到任何符号。 “Massif(以及更普遍的 xtree Massif 输出格式)不使用存档的调试信息。只有 Memcheck 已经(在某种程度上)使用 --keep-debuginfo=yes 进行了测试,因此其他工具可能有未​​知的限制。”
  • @ManjunathaM :实际上,massif 没有利用这些信息。我编辑了答案以澄清,并建议使用 memcheck xtree 泄漏报告查看堆配置文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-18
  • 2010-12-10
  • 1970-01-01
  • 2015-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多