nm 命令 程序符號信息查看


原文鏈接

用途

顯示關於對象文件、可執行文件以及對象文件庫里的符號信息。

語法

nm [ -A ] [ -C ] [ -X {32|64|32_64}] [ -f ] [ -h ] [ -l ] [ -p ] [ -r ] [ -T ] [ -v ] [ -B -P ] [ -e -g | -u ] [ -d -o -x -tFormat ] File ...

描述

nm 命令顯示關於指定 File 中符號的信息,文件可以是對象文件、可執行文件或對象文件庫。 如果文件沒有包含符號信息,nm 命令報告該情況,但不把它解釋為出錯條件。 nm 命令缺省情況下報告十進制符號表示法下的數字值。

nm 命令把以下符號信息寫入標准輸出:

  • 對象名

    如果您指定了 -A 選項,則 nm 命令 只報告與該文件有關的或者庫或者對象名。

  • 符號名稱
  • 符號類型

    nm 命令使用以下符號(用同樣的字符表示弱符號作為全局符號)之一來表示文件符號類型:

    A Global absolute 符號。
    a Local absolute 符號。
    B Global bss 符號。
    b Local bss 符號。
    D Global data 符號。
    d Local data 符號。
    f 源文件名稱符號。
    T Global text 符號。
    t Local text 符號。
    U 未定義符號。
  • 大小

    如果可應用,nm 命令報告與符號有關的大小。

標志

 

-A 每行或者顯示全路徑名稱或者顯示對象庫名。
-B 在 Berkeley 軟件分發(BSD)格式中顯示輸出:

 

值   類型   名稱
-C 限制解碼(demangle) C++ 名稱。缺省是解碼所有 C++ 符號名。
注:
C++ 對象文件中的符號在被使用前它們的名稱已經被解碼了。
-d 用十進制顯示符號的值和大小。這是缺省的。
-e 只顯示靜態的和外部的(全局)符號。
-f 顯示完整的輸出,包括冗余的 .text、 .data 以及 .bss 符號,這些在通常都是被限制的。
-g 只顯示外部的(全局)符號。
-h 限制輸出頭數據的顯示。
-l 通過給 WEAK 符號的編碼鍵附加一個 * 來區分 WEAK 和 GLOBAL 符號。 如果和 -P 選項一起使用, WEAK 符號的符號類型顯示如下:
V
Weak Data 符號
W
Weak Text 符號
w
Weak 未定義符號
Z
Weak bss 符號
-o 用八進制而不是十進制數來顯示符號的值和大小。
-P 以標准可移植輸出格式顯示信息:

 

庫/對象名  名稱   類型   值   大小

該格式以十六進制符號表示法顯示數字值,除非您用 -t-d 或 -o 標志指定不同的格式。

如果您指定了 -A 標志 -P 標志只顯示 庫/對象名字段。同樣,-P 標志只顯示大小適用的符號大小字段。

-p 不排序。輸出按符號表順序打印。
-r 倒序排序。
-T 把可能會溢出它的列的每個名字截短,使顯示的名字的最后一個字符是星號(*)。 缺省情況下,nm 顯示列出的符號的全名,並且一個比為其設置的列的寬度長的名稱會引起名稱后的每個列無法對齊。
-t Format 顯示指定格式下的數字值,其中 Format 參數是以下符號表示法之一:
d
十進制符號表示法。這是  nm 命令的缺省格式。
o
八進制符號表示法。
x
十六進制符號表示法。
-u 只顯示未定義符號。
-v 按值而不是按字母表順序排序輸出。
-x 用十六進制而不是十進制數來顯示符號的值和大小。
-X mode 指定 nm 應該檢查的對象文件的類型。 mode 必須是下列之一:
32
只處理 32 位對象文件
64
只處理 64 位對象文件
32_64
處理 32 位和 64 位對象文件

缺省是處理 32 位對象文件(忽略 64 位對象)。 mode 也可以 OBJECT_MODE 環境變量來設置。例如,OBJECT_MODE=64 使 nm 處理任何 64 位對象並且忽略 32 位對象。 -X 標志覆蓋 OBJECT_MODE 變量。

注:
nm 命令支持  -- (雙連字符)標志。如果文件名會被曲解為一個選項,該標志區別於  File 操作數。 例如,要指定文件名以連字符開始,請使用  -- 標志。

退出狀態

該命令返回下列出口值:

0 成功完成。
>0 發生錯誤。

示例

  1. 列出 a.out 對象文件的靜態和外部符號,請輸入:

     

    nm -e a.out
  2. 以十六進制顯示符號大小和值並且按值排序符號,請輸入:

     

    nm -xv a.out
  3. 顯示 libc.a 中所有 64 位對象符號,忽略所有 32 位對象:

     

    nm -X64 /usr/lib/libc.a


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM