You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

5.7 KiB

objdump

说明

objdump命令 是用查看目标文件或者可执行的目标文件的构成的gcc工具。显示二进制文件信息

选项

用法objdump <选项> <文件>
 显示来自目标 <文件> 的信息。至少必须给出以下选项之一:
-a, --archive-headers    Display archive header information
-f, --file-headers       Display the contents of the overall file header
-p, --private-headers    Display object format specific file header contents
-P, --private=OPT,OPT... Display object format specific contents
-h, --[section-]headers  Display the contents of the section headers
-x, --all-headers        Display the contents of all headers
-d, --disassemble        Display assembler contents of executable sections
-D, --disassemble-all    Display assembler contents of all sections
-S, --source             Intermix source code with disassembly
-s, --full-contents      Display the full contents of all sections requested
-g, --debugging          Display debug information in object file
-e, --debugging-tags     Display debug information using ctags style
-G, --stabs              Display (in raw form) any STABS info in the file
-W[lLiaprmfFsoRt] or
--dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,
        =frames-interp,=str,=loc,=Ranges,=pubtypes,
        =gdb_index,=trace_info,=trace_abbrev,=trace_aranges,
        =addr,=cu_index]
                         Display DWARF info in the file
-t, --syms               Display the contents of the symbol table(s)
-T, --dynamic-syms       Display the contents of the dynamic symbol table
-r, --reloc              Display the relocation entries in the file
-R, --dynamic-reloc      Display the dynamic relocation entries in the file
@<file>                  Read options from <file>
-v, --version            Display this program's version number
-i, --info               List object formats and architectures supported
-H, --help               Display this information

 以下选项是可选的:
-b, --target=BFDNAME           将标的目标文件格式指定为 BFDNAME
-m, --architecture=MACHINE     将标的体系结构指定为 MACHINE
-j, --section=NAME             只显示 NAME 节的信息
 isassembler-options=OPT 将文本传递到 OPT 反汇编程序
 ian=big               反汇编时假定高位字节在前
 ian=little            反汇编时假定低位字节在前
    --file-start-context       从文件的起点引入上下文 (带有 -S)
-l, --line-numbers             在输出中给出行号和文件名
 emangle[=STYLE]         对修饰过的 (mangled) 符号名进行解码
                                如果给出了 STYLESTYLE 可能为“auto”、“gnu”、
 ”、“arm”、“hp”、“edg”或“gnu-new-abi”
 e                     以多于 80 列的宽度对输出进行格式化
 isassemble-zeroes       反汇编时不要跳过为零的块
 dress=ADDR       只有进程数据的地址 >= ADDR
 dress=ADDR        只有进程数据的地址 <= ADDR
 dresses         同反汇编代码并列显示完整的地址
    --[no-]show-raw-insn       同符号反汇编并列显示十六进制值
 just-vma=OFFSET        为所有显示的节地址增加 OFFSET

 warf-depth=N        Do not display DIEs at depth N or greater
 warf-start=N        Display DIEs starting with N, at the same depth
 eeper
 warf-check          Make additional dwarf internal consistency checks.      

objdump支持的目标 elf64-x86-64 elf32-i386 elf32-iamcu elf32-x86-64 a.out-i386-linux pei-i386 pei-x86-64 elf64-l1om elf64-k1om elf64-little elf64-big elf32-little elf32-big plugin srec symbolsrec verilog tekhex binary ihex
objdump支持的体系结构 i386 i386:x86-64 i386:x64-32 i8086 i386:intel i386:x86-64:intel i386:x64-32:intel i386:nacl i386:x86-64:nacl i386:x64-32:nacl iamcu iamcu:intel l1om l1om:intel k1om k1om:intel plugin

下列 i386/x86-64 特定的反汇编器选项在使用 -M 开关时可用(使用逗号分隔多个选项):
  x86-64      Disassemble in 64bit mode
  i386        Disassemble in 32bit mode
  i8086       在 16 位模式下反汇编
  att         用 AT&T 语法显示指令
  intel       用 Intel 语法显示指令
  att-mnemonic
              Display instruction in AT&T mnemonic
  intel-mnemonic
              Display instruction in Intel mnemonic
  addr64      假定 64 位地址大小
  addr32      假定 32 位地址大小
  addr16      假定 16 位地址大小
  data32      假定 32 位数据大小
  data16      假定 16 位数据大小
  suffix      在 AT&T 语法中始终显示指令后缀
  amd64       Display instruction in AMD64 ISA
  intel64     Display instruction in Intel64 ISA

实例

objdump -a libmy2.a     # 查看档案库文件中的信息
objdump -i          # 显示可用的架构和目标结构列表
objdump --section=.text -s mytest.o     # 显示mytest.o文件中的text段的内容
objdump -S mytest.o   # 反汇编出mytest.o的源代码

objdump -j .text -S mytest.o
: << comment
反汇编mytest.o中的text段内容并尽可能用源代码形式表示,注意:不能单独使用-j或者--section例如`objdump -j .text mytest.o
是不会运行成功的`。另外-S命令对于包含调试信息的目标文件显示的效果比较好如果编译时没有指定g++的-g选项那么目标文件就不
包含调试信息
comment

objdump -d -l mytest.o
: << comment
反汇编特定段,并将汇编代码对应的文件名称和行号对应上
这里,项"-d"从objfile中反汇编那些特定指令机器码的section而使用"-l"指定用文件名和行号标注相应的目标代码,仅仅和-d、-D或
者-r一起使用使用-ld和使用-d的区别不是很大在源码级调试的时候有用要求编译时使用了-g之类的调试编译选项
comment