Objdump

objdump是在类Unix操作系统上显示关于目标文件的各种信息的命令行程序。例如，它可用作反汇编器来以汇编代码形式查看可执行文件。它是GNU Binutils的一部分，用于在可执行文件和其他二进制数据上进行精细粒度控制。objdump使用BFD库来读取目标文件的内容。类似工具还有readelf、Microsoft DUMPBIN和Borland 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语法展示。

参见
 GNU Binutils

外部链接
 
 
 Binutils::Objdump - Perl interface to objdump

Unix编程工具
反汇编器