objdump的使用方法和 symbol table的每列的含義,objdumpsymbol

來源:互聯網
上載者:User

objdump的使用方法和 symbol table的每列的含義,objdumpsymbol
一、objdump的用法

objdump命令的man手冊

objdump
    [-a] [-b bfname|
    --target=bfdname] [-C] [--debugging]
    [-d] [-D]
    [--disassemble-zeroes]
    [-EB|-EL|--endian={big|little}] [-f]
    [-h] [-i|--info]
    [-j section | --section=section]
    [-l] [-m machine ] [--prefix-addresses]
    [-r] [-R]
    [-s|--full-contents] [-S|--source]
    [--[no-]show-raw-insn] [--stabs] [-t]
    [-T] [-x]
    [--start-address=address] [--stop-address=address]
    [--adjust-vma=offset] [--version] [--help]
    objfile...

--archive-headers

-a 顯示檔案庫的成員資訊,與 ar tv 類似
    objdump -a libpcap.a
    和 ar -tv libpcap.a 顯示結果比較比較
    顯然這個選項沒有什麼意思。
--adjust-vma=offset
    When dumping information, first add offset to all
    the section addresses. This is useful if the sec-
    tion addresses do not correspond to the symbol
    table, which can happen when putting sections at
    particular addresses when using a format which can
    not represent section addresses, such as a.out.
-b bfdname
--target=bfdname
    指定目標碼格式。這不是必須的,objdump能自動識別許多格式,
    比如:objdump -b oasys -m vax -h fu.o
    顯示fu.o的頭部摘要資訊,明確指出該檔案是Vax系統下用Oasys
    編譯器產生的目標檔案。objdump -i將給出這裡可以指定的
    目標碼格式列表
--demangle
-C 將底層的符號名解碼成使用者級名字,除了去掉所有開頭
   的底線之外,還使得C++函數名以可理解的方式顯示出來。
--debugging
    顯示調試資訊。企圖解析儲存在檔案中的調試資訊並以C語言
    的文法顯示出來。僅僅支援某些類型的調試資訊。
--disassemble
-d 反組譯碼那些應該還有指令機器碼的section
--disassemble-all
-D 與 -d 類似,但反組譯碼所有section
--prefix-addresses
    反組譯碼的時候,顯示每一行的完整地址。這是一種比較老的反組譯碼格式。
    顯示效果並不理想,但可能會用到其中的某些顯示,自己可以對比。
--disassemble-zeroes
    一般反組譯碼輸出將省略大塊的零,該選項使得這些零塊也被反組譯碼。
-EB
-EL
--endian={big|little}
    這個選項將影響反組譯碼出來的指令。
    little-endian就是我們當年在dos下玩彙編的時候常說的高位在高地址,
    x86都是這種。

--file-headers
-f 顯示objfile中每個檔案的整體頭部摘要資訊。

--section-headers
--headers
-h 顯示目標檔案各個section的頭部摘要資訊。

--help 簡短的協助資訊。

--info
-i 顯示對於 -b 或者 -m 選項可用的架構和目標格式列表。

--section=name
-j name 僅僅顯示指定section的資訊

--line-numbers
-l 用檔案名稱和行號標註相應的目標代碼,僅僅和-d、-D或者-r一起使用
   使用-ld和使用-d的區別不是很大,在源碼級調試的時候有用,要求
   編譯時間使用了-g之類的調試編譯選項。

--architecture=machine
-m machine
    指定反組譯碼目標檔案時使用的架構,當待反組譯碼檔案本身沒有描述
    架構資訊的時候(比如S-records),這個選項很有用。可以用-i選項
    列出這裡能夠指定的架構

--reloc
-r 顯示檔案的重定位入口。如果和-d或者-D一起使用,重定位部分以反匯
   編後的格式顯示出來。

--dynamic-reloc
-R 顯示檔案的動態重定位入口,僅僅對於動態目標檔案有意義,比如某些
   共用庫。

--full-contents
-s 顯示指定section的完整內容。

    objdump --section=.text -s inet.o | more

--source
-S 儘可能反組譯碼出原始碼,尤其當編譯的時候指定了-g這種調試參數時,
   效果比較明顯。隱含了-d參數。

--show-raw-insn
    反組譯碼的時候,顯示每條彙編指令對應的機器碼,除非指定了
    --prefix-addresses,這將是預設選項。

--no-show-raw-insn
    反組譯碼時,不顯示彙編指令的機器碼,這是指定 --prefix-addresses
    選項時的預設設定。

--stabs
    Display the contents of the .stab, .stab.index, and
    .stab.excl sections from an ELF file. This is only
    useful on systems (such as Solaris 2.0) in which
    .stab debugging symbol-table entries are carried in
    an ELF section. In most other file formats, debug-
    ging symbol-table entries are interleaved with
    linkage symbols, and are visible in the --syms output.

--start-address=address
    從指定地址開始顯示資料,該選項影響-d、-r和-s選項的輸出。

--stop-address=address
    顯示資料直到指定地址為止,該選項影響-d、-r和-s選項的輸出。

--syms
-t 顯示檔案的符號表入口。類似於nm -s提供的資訊

--dynamic-syms
-T 顯示檔案的動態符號表入口,僅僅對動態目標檔案有意義,比如某些
   共用庫。它顯示的資訊類似於 nm -D|--dynamic 顯示的資訊。

--version 版本資訊

    objdump --version

--all-headers
-x 顯示所有可用的頭資訊,包括符號表、重定位入口。-x 等價於
   -a -f -h -r -t 同時指定。

    objdump -x inet.o

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.