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语法展示。
参见
[编辑]外部链接
[编辑]- Linux用户命令(User Commands)手册页 –
- Linux用户命令(User Commands)手册页 –
- Binutils::Objdump(页面存档备份,存于互联网档案馆) - Perl interface to objdump
|