nmコマンド

2788 ワード

nmコマンド
このコマンドは、ターゲットファイルのシンボルをリストします.ターゲットファイルが指定されていない場合は、デフォルトはa.outです.
コマンドパラメータ
[-a|--debug-syms]
[-g|--extern-only] //       .
[-B] [-C|--demangle[=style]] 
[-D|--dynamic] 
[-S|--print-size] 
[-s|--print-armap] 
[-A|-o|--print-file-name] 
[-n|-v|--numeric-sort] 
[-p|--no-sort] 
[-r|--reverse-sort] [--size-sort] 
[-u|--undefined-only] //         .
[-t radix|--radix=radix] //      。d    , o    , x     .
[-P|--portability] 
[--target=bfdname] 
[-fformat|--format=format] //     , "bsd","sysv"  "posix"  。   “bsd”
[--defined-only] //         .
[-l|--line-numbers] //      ,               
[--no-demangle] 
[-V|--version] 
[-X 32_64] 
[--help]  //    
[objfile...]  



出力フォーマット
nmコマンドの出力は3つの部分:1シンボル値を含む.デフォルトでは16進数が表示されますが、指定することもできます.2シンボルタイプ.小文字はローカルシンボルであり、大文字はグローバルシンボル(external)を表す.3シンボル名.例を示します.
                U dyld_stub_binder
                 U _objc_storeStrong
                 U _objc_retainAutoreleasedReturnValue
                 U _objc_retain
                 U _objc_release
                 U _objc_msgSend
                 U _objc_autoreleaseReturnValue
0000000000007cf8 T _checkName
                 U __objc_empty_cache
                 U ___CFConstantStringClassReference
00000000000084d8 S _OBJC_METACLASS_$_WillExistModel
                 U _OBJC_METACLASS_$_NSObject
00000000000083e8 S _OBJC_METACLASS_$_Module1
0000000000008438 S _OBJC_METACLASS_$_ExistModel3
0000000000008398 S _OBJC_METACLASS_$_ExistModel2
0000000000008488 S _OBJC_METACLASS_$_ExistModel1
0000000000008500 S _OBJC_CLASS_$_WillExistModel
                 U _OBJC_CLASS_$_NSString
                 U _OBJC_CLASS_$_NSObject
0000000000008410 S _OBJC_CLASS_$_Module1
0000000000008460 S _OBJC_CLASS_$_ExistModel3
00000000000083c0 S _OBJC_CLASS_$_ExistModel2
00000000000084b0 S _OBJC_CLASS_$_ExistModel1
                 U _NSStringFromSelector
0000000000007f80 S _MTG_Module1VersionString
0000000000007fb0 S _MTG_Module1VersionNumber
0000000000007d54 t -[Module1 moduleStyle1:]

記号の種類を紹介します
A:シンボル値は絶対です.さらなる接続では、変更されません.B:符号は未初期化データセグメント(known as BSS)にある.C:コモンシンボル.共通シンボルは初期化されていないデータです.接続時には、複数の共通記号に同じ名前を用いることができる、この記号がある場所で定義されている場合、共通記号は未定義の参照とみなされる.D:初期化データセグメントのシンボルG:初期化データセグメントの小ターゲットシンボル.一部のターゲットファイルフォーマットでは、グローバルint変数が大きなグローバル配列に対してより効率的に小さなターゲットデータにアクセスできます.I:他の記号の直接応用はGNU拡張で、めったに使いません.N:デバッグシンボル.R:読取り専用データセグメント記号.S:未初期化データセグメントの小ターゲットシンボル.T:コードセグメントの記号.U:符号が定義されていない.V:弱オブジェクト(weak object)記号.1つの定義された弱い記号が1つの普通の定義記号に接続すると、普通の定義記号は正常に使用することができ、1つの未定義の弱いオブジェクトが1つの未定義の記号に接続されると、弱い記号の値は0である.W:弱いオブジェクト記号が指定されていない弱い記号(weak symbol).-:a.outターゲットファイルの刺記号(stabs symbol).この場合、印刷の次の値は、他のフィールド、説明フィールド、およびタイプです.スパイク記号は、デバッグ情報を保持するために使用されます.未知のシンボルタイプ、またはターゲットファイル特有のシンボルタイプ.
オリジナルアドレス