objdump是在類Unix作業系統上顯示關於目的檔的各種資訊的命令列程式。例如,它可用作反組譯器來以組譯代碼形式檢視可執行檔。它是GNU Binutils的一部分,用於在可執行檔和其他二進位資料上進行精細粒度控制。objdump使用BFD庫來讀取目的檔的內容。類似工具還有readelfMicrosoft DUMPBINBorland TDUMP

objdump
作業系統Unix類Unix
類型命令
許可協定GNU GPL

注意在特定平台(比如Mac OS X)上,objdump二進位檔案可能實際上被連接到llvm的objdump,它有著不同的命令選項和表現。

例子 編輯

比如對nm條目的例子代碼編譯成的目的檔test.o執行如下命令:

 $ objdump -d -r test.o | grep main.: -A21

-d選項指示進行反組譯,-r選項指示穿插上重定位入口項,預設將組譯代碼AT&T語法展示。接著將它重新導向到grep,它尋找main函式連帶顯示其後21行。結果輸出為:

0000000000000045 <main>:
  45:	55                   	push   %rbp
  46:	48 89 e5             	mov    %rsp,%rbp
  49:	48 83 ec 10          	sub    $0x10,%rsp
  4d:	89 7d fc             	mov    %edi,-0x4(%rbp)
  50:	48 89 75 f0          	mov    %rsi,-0x10(%rbp)
  54:	c7 05 00 00 00 00 01 	movl   $0x1,0x0(%rip)        # 5e <main+0x19>
  5b:	00 00 00 
			56: R_X86_64_PC32	.bss-0x8
  5e:	bf 02 00 00 00       	mov    $0x2,%edi
  63:	e8 00 00 00 00       	callq  68 <main+0x23>
			64: R_X86_64_PLT32	global_function-0x4
  68:	89 05 00 00 00 00    	mov    %eax,0x0(%rip)        # 6e <main+0x29>
			6a: R_X86_64_PC32	global_var-0x4
  6e:	bf 03 00 00 00       	mov    $0x3,%edi
  73:	e8 00 00 00 00       	callq  78 <main+0x33>
			74: R_X86_64_PLT32	extern_function-0x4
  78:	89 05 00 00 00 00    	mov    %eax,0x0(%rip)        # 7e <main+0x39>
			7a: R_X86_64_PC32	extern_var-0x4
  7e:	b8 00 00 00 00       	mov    $0x0,%eax
  83:	c9                   	leaveq 
  84:	c3                   	retq

可使用-M intel選項選用intel語法展示。

參見 編輯

外部連結 編輯