我有一个正在调试模式下构建的静态库,但是当我进入它时,我仍然会反汇编。我想知道如何使用 nm 或其他工具来确保调试符号不会被剥离。
问问题
18742 次
4 回答
24
您可以使用nm
's option--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
。
于 2012-12-20T07:37:02.990 回答
3
您可以使用strip -S libXX.a
来检查您的静态库大小是否已减小。如果不包含调试符号,则静态库大小不会改变。
它适用于 Mac OS 来检查 Xcode 生成的静态库。
于 2016-01-07T03:32:49.333 回答
0
为您的操作系统下载Dependencywalker
它会检测你的 dll 是否有调试符号。如果您在“符号”下看到“无效”,则表示调试符号已被删除。有效值为:PDB、CV、DBG 等。
于 2012-12-20T06:00:48.190 回答