如果在编译C文件时向GCC提供默认选项(-g),如何从Linux上的可执行文件转储debug_loc部分?我使用readelf
linux实用程序。
GCC默认以DWARF4格式生成DWARF信息,所以如果我传递-g-dwarf2,我可以看到.debug_loc部分,但是如果使用默认选项生成信息,如何检查该部分,因为我没有看到转储中的部分?
答案 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以获取优化的代码。尝试使用编译器标志优化代码。