我有一个在 Debug模式下构建的静态库,但是当我进入该库时,仍然会被反汇编。我想知道如何使用nm或其他工具来确保不删除调试符号。

最佳答案

您可以使用nm的选项--debug-syms,让nm也列出打包到库中的对象的调试器符号(如果有)。

对于调试器符号,第二列指示N

示例(假定对象example.o位于库中)

nm --debug-syms libexample.a

输出(摘录):
example.o:
0000000000000000 b .bss
0000000000000000 n .comment
0000000000000000 d .data
0000000000000000 N .debug_abbrev
0000000000000000 N .debug_aranges
0000000000000000 N .debug_info
0000000000000000 N .debug_line
0000000000000000 N .debug_loc
0000000000000000 N .debug_pubnames
0000000000000000 N .debug_str
0000000000000000 r .eh_frame
0000000000000000 n .note.GNU-stack
0000000000000000 r .rodata
0000000000000000 t .text
...

有关更多信息,请参见man nm

关于c++ - 如何检查静态库以查看调试符号是否已导出?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13966121/

10-13 09:41