linux - 从可执行文件中转储 debug_loc 部分

标签 linux gcc gdb dwarf

如果在编译 C 文件时向 GCC 提供了默认选项 (-g),我如何从 Linux 上的可执行文件中转储 debug_loc 部分?我使用 readelf linux 实用程序。

GCC 默认生成 DWARF4 格式的 DWARF 信息,所以如果我通过 -g-dwarf2 我可以看到 .debug_loc 部分但是如果信息是使用默认选项生成的如何检查该部分因为我没有在转储中看到该部分?

最佳答案

您是否使用最新版本的 binutils?在 Ubuntu 14.04 上,我可以使用“gcc -g test.c -o test”构建可执行文件。

通过“readelf --debug-dump=info test”我可以确认它正在使用 DWARF 4。

之后,您(至少)有两种方法来转储 .debug_line 部分的内容。

readelf --debug-dump=decodedline test

这将转储解码的行号信息。你直接得到 line==address 映射。

还有:

readelf --debug-dump=rawline test

这会得到原始的 debug_line 内容。

关于linux - 从可执行文件中转储 debug_loc 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28448338/

相关文章:

c++ - 定义模板 numeric_limits 的 limit.h 文件在哪里

gcc - -march 与 -mtune 有何不同?

objective-c - 调试时如何从 block 中访问 self 或 ivars

c - 从 c 程序调用时 gcc 出错

ios - XCode4 调试器总是在 Main 中中断

debugging - 暂停进程以让调试器有时间附加

linux - 如何为 nupkg 编写 pash 脚本?

Mysql: unknown variable, 无法运行任何mysql应用程序,似乎与my.cnf无关

linux - Jenkins 构建错误

linux - 在 shell 中创建用户 cron 时出错