本文主要是介绍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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!