如何知道链接到二进制可执行文件的调试符号文件的名称和/或路径?
作者:互联网
如何知道链接到二进制可执行文件的调试符号文件的名称和/或路径?
假设你是这样的:
objcopy --only-keep-debug foo foo.dbg
objcopy --strip-debug foo
objcopy --add-gnu-debuglink=foo.dbg foo
现在foo.dbg有调试符号,foo只有gdb可以使用的foo.dbg链接.
由于gdb可以从foo知道符号文件,如何在不实际运行gdb的情况下知道相同的内容?
我观察到,即使我将可执行文件从foo重命名为xyz仍然gdb从foo.dbg加载符号,所以它不像binaryname.extension,
并且扩展是可选的.
解决方法:
how can we know same without actually running gdb?
这些命令中的任何一个都会告诉您:
readelf -x.gnu_debuglink foo
objdump -sj.gnu_debuglink foo
objcopy –add-gnu-debuglink只是添加了包含给定路径的.gnu_debuglink部分,以及调试文件的校验和.
更多信息here.
标签:c-3,linux,debugging,debug-symbols,gdb 来源: https://codeday.me/bug/20190522/1154402.html