gpt4 book ai didi

gcc - valgrind 堆栈跟踪中缺少符号

转载 作者:行者123 更新时间:2023-12-04 14:46:52 26 4
gpt4 key购买 nike

我正在使用 valgrind 调试通过 dlopen 使用可加载库的二进制文件。
在 debian stable 上,stacktrace 不包含可加载库中调用的符号。

| | ->11.55% (114,688B) 0x769492C: ???
| | | ->11.55% (114,688B) 0x7697289: ???
| | | ->11.55% (114,688B) 0x769806F: ???
| | | ->11.55% (114,688B) 0x419812: myfunc (main.c:1010)

Debian 不稳定上的 Valgrind 工作正常,符号得到正确解析。所以我开始寻找不同的地方。
我在两个系统上都有这些包(valgrind 从不稳定更新到 3.7):
ii  valgrind                      1:3.7.0-1+b1
ii libtool 2.2.6b-2
ii gcc 4:4.4.5-1
ii binutils 2.20.1-16

库没有被剥离并包含调试信息:
 ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=0x33ffd210859178c15bb3923c5491e1a1b6065015, not stripped

仔细观察,我注意到库的大小不同,在 debian stable 上,lib 稍大。与 readelf 相比,调试信息的大小更大。
  [26] .debug_aranges    PROGBITS        0000000000000000 00a74c 000090 00      0   0  1
[27] .debug_pubnames PROGBITS 0000000000000000 00a7dc 000385 00 0 0 1
[28] .debug_info PROGBITS 0000000000000000 00ab61 00512f 00 0 0 1
[29] .debug_abbrev PROGBITS 0000000000000000 00fc90 0006e2 00 0 0 1
[30] .debug_line PROGBITS 0000000000000000 010372 002314 00 0 0 1
[31] .debug_str PROGBITS 0000000000000000 012686 0019d3 01 MS 0 0 1
[32] .debug_loc PROGBITS 0000000000000000 014059 000f24 00 0 0 1
[33] .debug_macinfo PROGBITS 0000000000000000 014f7d 179082 00 0 0 1
[34] .debug_ranges PROGBITS 0000000000000000 18dfff 000060 00 0 0 1

这让我觉得在 debian stable 上构建的二进制文件的调试信息部分缺少一些东西。现在我的问题是:为什么和如何不同的二进制文件?构建中使用的工具(gcc、libtool、binutils)是相同的,包括编译器/链接器标志和命令(我在 make 的输出中检查了 diff)。

更新:
debug_info 部分大小的差异来自于源文件的完整路径也存储在那里并且构建主页不同的事实。在不稳定/稳定版上也有不同的 openssl 版本,它们向 debug_info 部分添加了一些不同的符号。因此 debug_info 大小的差异。

在 Debug模式 (-d -v -v) 下运行 valgrind 表明它在两种情况下都从可加载库中读取符号:
--19837-- Reading syms from /usr/lib/myplugin.so (0x6c62000)

最佳答案

如果您将 dlopen 用于可加载库,则很可能它在程序终止之前已被卸载。因此 Valgrind 无法解析其符号。尽量避免在这个库上调用 dlclose。有关更多信息,请参阅 http://valgrind.org/docs/manual/faq.html#faq.unhelpful

关于gcc - valgrind 堆栈跟踪中缺少符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9284276/

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