linuxnmコマンド
Linux Nm Command
特徴
nmは名前の省略形であり、コマンド(通常はライブラリ)でシンボルファイルを含めます。多くの場合、主な関心事であるロジックライブラリを認識していないため、関数や変数などの名前の競合の問題を知る必要があるだけです。もちろん、nmコマンドを使用できるときは、他にも同様のコマンドがあります。ここではnmについて説明します。
使用法:nm [オプション] [ファイル]
[file(s)]にシンボルをリストします(デフォルトではa.out)。
オプションは次のとおりです。
-a、-debug-symsはデバッグ情報のみを表示します
-A、-print-file-シンボル情報の各行の名前、ファイル名印刷クエリ
-C、-demangle [= STYLE]低レベルの記号名は、ユーザーレベルの名前に変換されます。これは、ユーザーがより理解しやすい形式に変換することを意味します。
-D、-動的表示動的シンボル情報
-f、-format = FORMAT出力フォーマット設定情報。これは、「bsd」、「sysv」、または「posix」の場合があります。デフォルトは `bsd 'です
-g、-extern-ダイナミックライブラリとしてパッケージ化されている場合、外部シンボルのみを表示します。関数を呼び出す必要があります。外部シンボルは外部である必要があります。または使用しません。
-l、-line-numbersは、各シンボルのファイル名と行番号を表示します
-n、-numeric-アドレスでソートされたシンボルをソートします
-r、-reverse-ソートの逆順
-S、-print-size定義記号の表示サイズ
-u、-undefined-only未定義のシンボルのみを表示します
-X 32_64(無視)
一般的な表示形式
値(シンボル値)、タイプ(シンボルタイプ)、名前(シンボル名)
の種類
デフォルトの16進表現を使用して見つかったnmシンボリック値、および関数の前にそのタイプを追加します。
値 | 説明 |
---|---|
に | シンボル絶対、リンクプロセスは変更できません |
B / b | 初期化されていないシンボルがbssセクションに表示されます |
C | パブリックシンボル、同名のシンボルはリンク時に上書きされます |
D / d | 初期化記号 |
G / g | 小さなデータアクセスの最適化のための初期化シンボル |
私 | その他の間接参照記号 |
N | デバッグシンボル |
P | シンボルスタック領域(空) |
R / r | 読み取り専用記号 |
S / s | 初期化されていないシンボル、小規模なデータアクセスの最適化 |
T / t | 市外局番記号 |
U | または未定義の外部シンボル |
u | グローバルにユニークなGNU予約文字 |
V / v | 弱い区切り文字(C ++強度シンボルの定義を参照) |
W / W | 弱い記号ですが、まだ定義されていませんオブジェクト弱い |
- | スタブフォーマットシンボル |
? | 認識されない記号 |