デバッグモードで構築している静的ライブラリがありますが、それにステップインすると、逆アセンブリが発生します。 nmまたは別のツールを使用して、デバッグシンボルが削除されないようにする方法を知りたいです。
nm
のオプション--debug-syms
を使用して、nm
に、ライブラリにパックされたオブジェクトのデバッガシンボル(存在する場合)もリストさせることができます。
デバッガシンボルの場合、2番目の列は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
を参照してください。
strip -S libXX.a
を使用して、静的ライブラリのサイズが縮小されているかどうかを確認できます。デバッグシンボルが含まれていない場合、静的ライブラリのサイズは変更されません。
Mac OSで動作し、Xcodeによって生成された静的ライブラリをチェックします。
ダウンロード Dependencywalker お使いのOS用
Dllにデバッグシンボルがあるかどうかを検出します。 「シンボル」の下に「無効」と表示されている場合は、デバッグシンボルが削除されていることを意味します。有効な値は、PDB、CV、DBGなどです。