跳至內容

objdump

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

objdump
操作系統Unix類Unix
類型命令
許可協議GNU GPL

objdump是在類Unix操作系統上顯示關於目標文件的各種信息的命令行程序。例如,它可用作反匯編器來以匯編代碼形式查看可執行文件。它是GNU Binutils的一部分,用於在可執行文件和其他二進制數據上進行精細粒度控制。objdump使用BFD庫來讀取目標文件的內容。類似工具還有readelfMicrosoft DUMPBINBorland TDUMP

注意在特定平台(比如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語法展示。

參見[編輯]

外部連結[編輯]