从可执行文件转储debug_loc部分

时间:2015-02-11 07:00:59

标签: linux gcc gdb dwarf

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

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

2 个答案:

答案 0 :(得分:0)

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

使用“readelf --debug-dump = info test”我可以确认它是使用DWARF 4.

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

  

readelf --debug-dump = codedline test

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

还有:

  

readelf --debug-dump = rawline test

这可以获得原始的debug_line内容。

答案 1 :(得分:0)

通常,生成.debug_loc以获取优化的代码。尝试使用编译器标志优化代码。