objdump是用来查看目标文件或者可执行的目标文件的构成的gcc工具。
1、常用参数说明
- -f:显示文件头信息
- -d:从objfile中反汇编那些特定指令机器码的section
- -D:反汇编所有section
- -h:显示目标文件各个section的头部摘要信息
- -x:显示所有可用的头信息,包括符号表、重定位入口。-x 等价于 -a -f -h -r -t 同时指定
- -i:显示对于 -b 或者 -m 选项可用的架构和目标格式列表
- -j name:仅仅显示指定名称为name的section的信息,需与-s一起用
- -l:用文件名和行号标注相应的目标代码,仅仅和-d、-D或者-r一起使用使用-ld和使用-d的区别不是很大,在源码级调试的时候有用,要求编译时使用了-g之类的调试编译选项
- -r:显示文件的重定位入口。如果和-d或者-D一起使用,重定位部分以反汇编后的格式显示出来
- -R:显示文件的动态重定位入口,仅仅对于动态目标文件有意义,比如某些共享库
- -s:显示指定section的完整内容。默认所有的非空section都会被显示
- -S:尽可能反汇编出源代码,尤其当编译的时候指定了-g这种调试参数时,效果比较明显。隐含了-d参数。
- -t:显示文件的符号表入口。类似于nm -s提供的信息
2、示例
1、显示可用的架构和目标结构列表
objdump -i
2、显示目标文件各个段的头部摘要信息
objdump -h mytest.o
3、反汇编目标文件的特定机器码段
objdump -d mytest.o