本文主要是介绍GNU Binutils之objdump,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
GNU Binutils之objdump
作者:makethyme
格式如下:
objdump [‘-a’|‘--archive-headers’]
[‘-b’ bfdname|‘--target=bfdname’]
[‘-C’|‘--demangle’[=style] ]
[‘-d’|‘--disassemble’]
[‘-D’|‘--disassemble-all’]
[‘-z’|‘--disassemble-zeroes’]
[‘-EB’|‘-EL’|‘--endian=’{big | little }]
[‘-f’|‘--file-headers’]
[‘--file-start-context’]
[‘-g’|‘--debugging’]
[‘-e’|‘--debugging-tags’]
[‘-h’|‘--section-headers’|‘--headers’]
[‘-i’|‘--info’]
[‘-j’ section|‘--section=’section]
[‘-l’|‘--line-numbers’]
[‘-S’|‘--source’]
[‘-m’ machine|‘--architecture=’machine]
[‘-M’ options|‘--disassembler-options=’options]
[‘-p’|‘--private-headers’]
[‘-r’|‘--reloc’]
[‘-R’|‘--dynamic-reloc’]
[‘-s’|‘--full-contents’]
[‘-W’|‘--dwarf’]
[‘-G’|‘--stabs’]
[‘-t’|‘--syms’]
[‘-T’|‘--dynamic-syms’]
[‘-x’|‘--all-headers’]
[‘-w’|‘--wide’]
[‘--start-address=’address]
[‘--stop-address=’address]
[‘--prefix-addresses’]
[‘--[no-]show-raw-insn’]
[‘--adjust-vma=’offset]
[‘--special-syms’]
[‘-V’|‘--version’]
[‘-H’|‘--help’]
objfile...
选项如下:
选项 | Desc |
-a --archive-header | 有库文件时,显示库文件的头信息。即显示该库文件由那些什么格式的目标文件组成 |
-b bfdname --target=bfdname | 指定目标文件的格式 |
-C --demangle[=style] | 将低级符号名解析成用户级符号名。这样可以使 C++ 函数具有可读性。例如 00000000 T _ZN6MyTest3sumEii 被解析成 00000000 T MyTest::sum(int, int) 。这样一来这样的符号便具有可读性 |
-g --debugging | 显示目标文件的调试信息 |
-d --disassemble | 反汇编含代码的段 |
-D --disassemble-all | 反汇编所有的段 |
-EB -EL --endian={big|little} | 指定目标文件的 endian |
-f --file-headers | 显示目标文件的头信息 |
-h --section-headers --headers | 显示目标文件的 section headers 。注意,在链接的过程中,会传递 -Ttext , -Tdata , -Tbss 选项给链接器,以指定 text , data , bss 的具体地址。特别是在嵌入式系统开发过程中,常常需要指定这些地址。 |
-i --info | 显示支持的 bfdname 和 machine 。其中 bfdname 可以用作 -b bfdname , machine 可用于 -m machine |
-l -line-numbers | 配合 -d , -D 或 -r 选项,列出源文件和汇编代码之间的对应关系 |
-m machine --architecture=machine | 指定目标文件的 architecture |
-p --private-headers | 显示属于该目标文件格式特有的一些信息,如: vector.o: file format elf32-m68hc12 private flags = 2:[abi=16-bit int, 64-bit double, cpu=HC12] [memory=flat] |
-r --reloc | 显示 relocation entries 。如源文件为 int abc(int a, int b); int sum(int a, int b) { return abc(a,b); } 查看 relocation entries ,便会发现有一个“ _abc ”的 entry 。 |
-R --dynamic-reloc | 查看文件的 dynamic relocation entries 。 |
-s --full-contents | 查看 section 的全部内容 |
-S --source | 反汇编时,将 source code 和汇编代码对应出来 |
--show-raw-insn | 反汇编时,以 16 进制格式列出具体指令码 |
--no-show-raw-insn | 反汇编时,不列出具体指令码 |
-t --syms | 列出 symbol table entries |
-T --dynamic-syms | 列出 dynamic symbol table entries 。 |
-V --version | 列出 objdump 的版本号 |
-x --all-headers | 列出所有的头信息 header information ,该选项等同于 -a –f –h –p –r –t |
这篇关于GNU Binutils之objdump的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!