21

デバッグ モードでビルドしている静的ライブラリがありますが、そのライブラリにステップ インすると、まだ逆アセンブリが発生します。nm または別のツールを使用して、デバッグ シンボルが削除されないようにする方法を知りたいです。

4

4 に答える 4

24

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

于 2012-12-20T07:37:02.990 に答える
4

Cygwin 経由の Windows を含む多くの OS で利用可能なfileコマンドを使用できます。
「ストリップされていない」と表示されている場合は、デバッグ情報が存在することを意味します。
補足として、静的ライブラリの場合、 ar.oを使用してファイルを抽出し、fileそれらを直接使用します。

于 2012-12-20T06:14:52.690 に答える
3

strip -S libXX.a静的ライブラリのサイズが縮小されたかどうかを確認するために使用できます。デバッグ シンボルが含まれていない場合、スタティック ライブラリのサイズは変わりません。

Mac OS で動作し、Xcode によって生成されたスタティック ライブラリをチェックします。

Linux および Unix の strip コマンド

于 2016-01-07T03:32:49.333 に答える
0

お使いの OS 用のDependencywalkerをダウンロードします

dll にデバッグ シンボルがあるかどうかを検出します。「シンボル」の下に「無効」と表示されている場合は、デバッグ シンボルが取り除かれていることを意味します。有効な値は、PDB、CV、DBG などです。

于 2012-12-20T06:00:48.190 に答える