Objdump

objdump
操作系统Unix和类Unix
类型命令
许可协议GNU GPL

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

外部链接

文件系統
程序
  • at
  • bg
  • chroot
  • cron
  • fg
  • kill
  • killall英语killall
  • nice
  • pgrep
  • pkill英语pkill
  • ps
  • pstree英语pstree
  • time
  • top
用户环境
  • clear
  • env
  • exit
  • history英语history (Unix)
  • id
  • logname
  • mesg英语mesg
  • passwd
  • su
  • sudo
  • uptime
  • talk英语talk (software)
  • tput英语tput
  • uname
  • w
  • wall英语wall (Unix)
  • who
  • whoami
  • write英语write (Unix)
文本编辑
  • awk
  • banner英语banner (Unix)
  • basename
  • comm英语comm
  • csplit英语csplit
  • cut
  • diff
  • dirname
  • ed
  • ex
  • fmt英语fmt
  • fold英语fold (Unix)
  • head英语head (Unix)
  • iconv
  • join英语join (Unix)
  • less
  • more
  • nl英语nl (Unix)
  • paste英语paste (Unix)
  • sed
  • sort英语sort (Unix)
  • spell英语spell (Unix)
  • strings英语strings (Unix)
  • tail
  • tr
  • uniq英语uniq
  • vi
  • wc
  • xargs
壳层内建
网络
查找
文档
  • apropos英语apropos (Unix)
  • help英语help (command)
  • man
软件开发
杂项
  • bc
  • cal
  • dc
  • expr
  • lp英语lp (Unix)
  • lpr
  • sleep
  • true和false
  • yes