其他分享
首页 > 其他分享> > 如何知道链接到二进制可执行文件的调试符号文件的名称和/或路径?

如何知道链接到二进制可执行文件的调试符号文件的名称和/或路径?

作者:互联网

如何知道链接到二进制可执行文件的调试符号文件的名称和/或路径?

假设你是这样的:

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