objdump 目标文件分析

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

4、反汇编特定段,并将汇编代码对应的文件名称和行号对应上

objdump -d -l mytest.o

5、反汇编所有段

objdump -D mytest.o

6、显示mytest.o文件中的text段的内容

objdump -j .text -s mytest.o

7、反汇编mytest.o中的text段内容,并尽可能用源代码形式表示

objdump -j .text -S mytest.o

8、反汇编出mytest.o的源代码

objdump -S mytest.o

9、显示文件的符号表入口

objdump -t mytest.o

你可能感兴趣的:(Linux,c/c++)