nm 命令 程式符號資訊查看

來源:互聯網
上載者:User

原文連結

用途

顯示關於對象檔案、可執行檔以及對象檔案庫裡的符號資訊。

文法

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.