Dumpbin工具参数详解

来源:互联网 发布:淘宝都是天猫 编辑:程序博客网 时间:2024/04/30 04:19


Dumpbin简介

         DUMPBIN是在Windows平台下用于显示COFF格式文件信息的一个命令行工具。你可以使用DUMPBIN去显示COFF格式的文件信息,比如像vc编译器生成的目标文件(obj),可执行文件(exe)和动态链接库(DLLs)等。

 

注:此工具只能在命令行下使用。

语法格式

DUMPBIN [options] files...或

DUMPBIN files...  [options]

 

说明:

1.   你可以指定一个或多个二进制文件(COFF格式)以及同时使用多个参数去控制信息的输出。DUMPBIN可以将这些信息输出到标准设备和一个文件中。命令如下:

        DUMPBIN/ALL /OUT:b.txt Test1.obj Test2.obj

DUMPBIN /ALL Test1.obj Test2.obj >b.txt

2.        如果你没有给DUMPBIN指定任何选项,它将等同于使用了/SUMMARY参数。

3.        如果你没有指定任何输入文件,它将列出所有的选项。

参数详解

         参数的使用可以用”-“或者”/”(-ALL等于/ALL)后面跟选项名。有些选项可以在选项名后接”:”正如前面实例一样在输出文件的选项时使用了/OUT:b.txt。使用空格或则制表符(Tab)分割命令选项。选项名,关键字和文件名是不区分大小写的。大多数的参数可以应用于所有的二进制文件。有少部分参数只能用于特定的文件。默认的DUMPBIN输出信息到标注输出设备(屏幕),只有使用了/OUT或者”>”时可以将文件输入到外部文件中。

 

/ALL

显示除”code disassembly”以外的所有信息。可以使用/DISASM选项来显示”codedisassembly”。使用/RAWDATA:NONE和/ALL去删除每个段中的二进制数据。

 

/ARCHIVEMEMBERS

         显示库中成员的基本信息。

 

 
/CLRHEADER file

         公共语言运行时。可参考微软官网的相关信息。

 

/DEPENDENTS

         显示出所依赖的DLLs的名字,但不现实导入函数的名字。

 

/DIRECTIVES

         显示编译器产生的.drective(链接时的参数)段中的信息。

 

/DISASM

         显示代码段反汇编的结果。/DISASM should only be used on native (not managed) images.(大概意思:不能使用在微软的C++“标准“中)。

 

/ERRORREPORT[NONE | PROMPT | QUEUE | SEND ]

         如果dumpbin.exe在运行时失败,你能使用”/ERRORREPORT”这个参数去发送错误信息到微软。更多

 

/EXPORTS

         显示可执行文件或DLL中导出的所有信息。

 

/FPO

         显示FPO( frame pointer optimization)记录。

 

/HEADERS

         显示文件和每个段的头部信息。当使用一个库文件时,它显示的是每个成员对象的头部信息。

 

/IMPORTS[:file]

         显示可执行文件或DLL文件中导入的DLL文件和它的函数列表。

 

/LINENUMBERS
     如果编译时使用了/Zi,/C7/Zd选项,行编号才存在于目标文件中,或者在连接时产生了调试信息是才能够显示行编号。
 
/LINKERMEMBER[:{1|2}]
           这个选项显示定义在库中的全局符号。如果”1”被指定将以对象的顺序显示对象以及他们相应的偏移量,如果”2”被指定将显示偏移和对象成员的索引,然后以字母顺序排序。
 

/LOADCONFIG

           这个选项会显示”IMAGE_LOAD_CONFIG_DIRECTORY”结构体中的相关信息,这个结构体是在文件加载时加载选项。

/OUT:filename

         这个选项将信息输出到指定的文件中。

 

/PDATA

这个参数只对RISC处理器才有用。显示.pdata中的相关信息。

 

/RAWDATA[:{1|2|4|8|NONE[,number]]

         显示原始数据(比如.text段中的指令数据)。你可以使用下列参数来格式化输出。

参数

结果

1

默认值,数据以十六进制显示,如果有打印字符就显示他的assii码。

2

数据以十六进制2字节形式显示。

4

数据以十六进制4字节形式显示。

8

数据以十六进制8字节形式显示。

NONE

数据被限制,这个参数可以配合/ALL一起使用来控制输出。

Number

以设定值来显示。

 

/RELOCATIONS

         显示对象中的重定位信息。

 

/SECTION:section

         显示由”section”指定段中的信息。你可以使用”/HEADERS”选项去显示每个段的头部信息。

 

/SUMMARY

         显示每个段的基本信息(段名和大小),如果其他选项没有指定这个选项是默认的。

 

/SYMBOLS

         这个参数会显示COFF文件的符号表(用于连接时从定位的)。在所有的对象中都存在符号表。一个COFF文件中的符号表只有在连接时使用了”/DEBUG”时才显示。前两句话感觉有点矛盾原文是这样的: “Symbol tables exist in all object files. A COFF symbol tableappears in an image file only if it is linked with /DEBUG”。

一个符号表的实例:

Dump of file main.obj

File Type: COFF OBJECT

 

COFF    SYMBOL   TABLE

000    00000000  DEBUG      notype      Filename      | .file

     main.cpp

002  000B1FDB   ABS      notype      Static      | @comp.id

003  00000000   SECT1      notype      Static      | .drectve

     Section length       26,#relocs   0, #linenums    0, checksum 722C964F

005  00000000   SECT2      notype      Static      | .text

     Section length      23,#relocs      1, #linenums    0, checksum 459FF65F, selection    1 (pick no duplicates)

007  00000000   SECT2      notype ()   External     | _main

008  00000000   UNDEF      notype ()   External     | ?MyDump@@YAXXZ (void __cdecl MyDump(void))

 

String Table Size = 0x10 bytes

 

Summary

 

     26 .drectve

     23 .text

这些结构信息你可以参考这两个结构体”IMAGE_SYMBOL” and “IMAGE_AUX_SYMBOL”也可以参考COFF文档

 

/TLS 

         显示一个来自可执行文件中的“IMAGE_TLS_DIRECTORY”结构体的信息,此结构定义在Winnt.h中,也显示回调函数的地址。如果你的程序中没有使用线程私有储存空间(”thread local storage”,)这个镜像文件中是不会包含“IMAGE_TLS_DIRECTORY”的。

 

/UNWINDINFO

这个选项只能使用于 Itanium处理器。

 

 

注:上面的每个选项在使用时都有这么一个选项——只用在编译时使用”/GL”选项生成的文件才能够使用”/HEADERS”这个选项。

0 0
原创粉丝点击