作者:
wuyanhuiyishi
在使用vc时,可以用dumpbin。exe来得到某个dll中所输出的符号的清单。如下面的
命令:dumpbin -exports cmpnt1.dll
如:
c:/windows/system32>dumpbin -exports msgsvc.dll
microsoft (r) coff binary file dumper version 6.00.8447
copyright (c) microsoft corp 1992-1998. all rights reserved.
dump of file msgsvc.dll
file type: dll
section contains the following exports for msgsvc.dll
0 characteristics
41107f60 time date stamp wed aug 04 14:17:04 2004
0.00 version
1 ordinal base
2 number of functions
2 number of names
ordinal hint rva name
1 0 00004abf servicemain
2 1 00004595 svchostpushserviceglobals
summary
1000 .data
1000 .reloc
1000 .rsrc
8000 .text
c:/>dumpbin
microsoft (r) coff binary file dumper version 6.00.844
copyright (c) microsoft corp 1992-1998. all rights res
usage: dumpbin [options] [files]
options:
/all
/arch
/archivemembers
/dependents
/directives
/disasm
/exports
/fpo
/headers
/imports
/linenumbers
/linkermember[:<1|2>]
/loadconfig
/out:filename
/pdata
/rawdata[:[,#]]
/relocations
/section:name
/summary
/symbols
若要运行 dumpbin,请使用下列语法:
dumpbin [options] files...
指定一个或多个二进制文件,以及控制信息所需的任何选项。dumpbin 将该信息显示到标准输出。可以将输出重定向到文件,或者使用 /out 选项为输出指定文件名。
当在文件上运行 dumpbin 但未指定选项时,dumpbin 显示 /summary 输出。
当键入命令 dumpbin 但没有任何其他命令行输入时,dumpbin 显示汇总其选项的用法语句。
dumpbin 选项
/all
此选项显示除代码反汇编外的所有可用信息。使用 /disasm 显示反汇编。可以与 /all 一起使用 /rawdata:none 来省略文件的原始二进制详细资料。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/archivemembers
此选项显示有关库成员对象的最少信息。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/clrheader file
此处: file 用 /clr 生成的图像文件。 备注
clrheader 显示有关在任何托管程序中使用的 .net 头的信息。输出显示 .net 头及其中各节的位置和大小(以字节计)。
file format spec.doc 描述 .net 头中的信息。net sdk 将 file format spec.doc 安装在 tools developers guide 目录中。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/directives
此选项转储图像中由编译器生成的 .directive 节。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/dependents
转储图像从中导入函数的 dll 的名称。不要转储导入函数名。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/disasm
此选项显示代码段的反汇编,如果出现在文件中则使用符号。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/exports
此选项显示从可执行文件或 dll 导出的所有定义。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/fpo
此选项显示框架指针优化 (fpo) 记录。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/headers
此选项显示文件头和每节的头。当用于库时,显示每个成员对象的头。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/imports[:file]
此选项显示导入到可执行文件或 dll 的 dll 列表(静态链接的和延迟加载)和上述每个 dll 的各个导入。
可选 file 规范允许指定仅显示某个 dll 的导入。例如:
dumpbin /imports:msvcrt.dll
此选项显示的输出与 /exports 输出相似。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/linenumbers
此选项显示 coff 行号。如果对象文件是用程序数据库 (/zi)、c7 兼容 (/z7) 或仅限行号 (/zd) 编译的,则它包含行号。如果可执行文件或 dll 是与生成调试信息 (/debug) 链接的,则它包含 coff 行号。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/linkermember[:<1|2>]
此选项显示库中定义的公共符号。指定参数 1 将按对象顺序显示符号及其偏移量。指定参数 2 将显示对象的偏移量和索引号,然后按字母顺序列出这些符号及每个符号的对象索引。若要两个输出都获得,指定不带数字参数的 /linkermember。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/loadconfig
此选项转储 image_load_config_directory 结构,此结构是由 windows nt 加载程序使用并在 winnt.h 中定义的可选结构。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/out:filename
此选项指定输出的 filename。默认情况下,dumpbin 将信息显示到标准输出。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/pdbpath[:verbose] filename
此处: filename 要为其查找匹配 .pdb 文件的 .dll 或 .exe 文件名。 verbose(可选) 报告曾尝试在其中定位 .pdb 文件的所有目录。 备注
/pdbpath 将沿调试器搜索 .pdb 文件的同一路径搜索计算机,并将报告哪些 .pdb 文件(若有)和 filename 中指定的文件相对应。
使用 visual studio 调试器时可能会遇到问题,这是因为调试器对调试文件的不同版本使用 .pdb 文件。
/pdbpath 将沿下列路径搜索 .pdb 文件: 检查可执行文件驻留的位置。 检查写入可执行文件的 pdb 的位置。这通常是图像被链接时的位置。 沿 visual studio ide 中配置的搜索路径检查。 沿 _nt_symbol_path 和 _nt_alt_symbol_path 环境变量中的路径检查。 在 windows 目录中检查。
/pdata
仅用于 risc 处理器。
此选项从图像或对象转储异常表 (.pdata)。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/rawdata[:<1|2|4|8|none[ ,number]]
此选项显示文件中每节的原始内容。参数控制显示格式,如下所示:
参数结果1默认值。内容以十六进制字节显示,如果内容具有打印的表示形式,则还显示为 ascii 字符。2内容显示为十六进制的 2 字节值。4内容显示为十六进制的 4 字节值。8内容显示为十六进制的 8 字节值。none取消显示原始数据。此参数对控制 /all 输出很有用。number显示的行被设置为每行具有 number 个值的宽度。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/relocations
此选项显示对象或图像中的任何重定位。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/section:section
此选项限制与指定的 section 有关的信息的输出。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/summary
此选项显示有关节的最少信息(包括总大小)。如果未指定其他选项,则此选项为默认值。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/symbols
此选项显示 coff 符号表。符号表存在于所有对象文件中。而对于图像文件,只有当它是与 /debug 链接的时,它才包含 coff 符号表。
下面是关于 /symbols 输出的说明。通过查阅 winnt.h(image_symbol 和 image_aux_symbol)或 coff 文档,可找到有关 /symbols 输出含义的附加信息。
假设有下列示例转储:
dump of file main.objfile type: coff objectcoff symbol table000 00000000 debug notype filename | .file main.cpp002 000b1fdb abs notype static | @comp.id003 00000000 sect1 notype static | .drectve section length 26, #relocs 0, #linenums 0, checksum 722c964f005 00000000 sect2 notype static | .text section length 23, #relocs 1, #linenums 0, checksum 459ff65f, selection 1 (pick no duplicates)007 00000000 sect2 notype () external | _main008 00000000 undef notype () external | ?mydump@@yaxxz (void __cdecl mydump(void))string table size = 0x10 bytessummary 26 .drectve 23 .text
对于以符号号码开头的行,下列说明描述了含有与用户相关的信息的列: 开头的 3 位数字是符号索引/号码。 如果第三列包含 sectx,则符号在对象文件的那一节中定义。但如果出现 undef,则它不在那个对象中定义并且必须在其他地方被解析。 第五列 (static, external) 说明符号是否只在那个对象的内部可见,或者是否是公共的(外部可见)。静态符号 _sym 不会链接到公共符号 _sym;这些符号是名为 _sym 的函数的两种不同实例。
编号行中的最后一列是符号名(修饰名和未修饰名)。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/unwindinfo
在程序图像(例如 exe 和 dll)中转储结构化异常处理 (seh) 表的展开描述符。/unwindinfo 仅适用于 ia64 图像。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
在使用vc时,可以用dumpbin。exe来得到某个dll中所输出的符号的清单。如下面的
命令:dumpbin -exports cmpnt1.dll
如:
c:/windows/system32>dumpbin -exports msgsvc.dll
microsoft (r) coff binary file dumper version 6.00.8447
copyright (c) microsoft corp 1992-1998. all rights reserved.
dump of file msgsvc.dll
file type: dll
section contains the following exports for msgsvc.dll
0 characteristics
41107f60 time date stamp wed aug 04 14:17:04 2004
0.00 version
1 ordinal base
2 number of functions
2 number of names
ordinal hint rva name
1 0 00004abf servicemain
2 1 00004595 svchostpushserviceglobals
summary
1000 .data
1000 .reloc
1000 .rsrc
8000 .text
c:/>dumpbin
microsoft (r) coff binary file dumper version 6.00.844
copyright (c) microsoft corp 1992-1998. all rights res
usage: dumpbin [options] [files]
options:
/all
/arch
/archivemembers
/dependents
/directives
/disasm
/exports
/fpo
/headers
/imports
/linenumbers
/linkermember[:<1|2>]
/loadconfig
/out:filename
/pdata
/rawdata[:[,#]]
/relocations
/section:name
/summary
/symbols
若要运行 dumpbin,请使用下列语法:
dumpbin [options] files...
指定一个或多个二进制文件,以及控制信息所需的任何选项。dumpbin 将该信息显示到标准输出。可以将输出重定向到文件,或者使用 /out 选项为输出指定文件名。
当在文件上运行 dumpbin 但未指定选项时,dumpbin 显示 /summary 输出。
当键入命令 dumpbin 但没有任何其他命令行输入时,dumpbin 显示汇总其选项的用法语句。
dumpbin 选项
/all
此选项显示除代码反汇编外的所有可用信息。使用 /disasm 显示反汇编。可以与 /all 一起使用 /rawdata:none 来省略文件的原始二进制详细资料。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/archivemembers
此选项显示有关库成员对象的最少信息。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/clrheader file
此处: file 用 /clr 生成的图像文件。 备注
clrheader 显示有关在任何托管程序中使用的 .net 头的信息。输出显示 .net 头及其中各节的位置和大小(以字节计)。
file format spec.doc 描述 .net 头中的信息。net sdk 将 file format spec.doc 安装在 tools developers guide 目录中。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/directives
此选项转储图像中由编译器生成的 .directive 节。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/dependents
转储图像从中导入函数的 dll 的名称。不要转储导入函数名。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/disasm
此选项显示代码段的反汇编,如果出现在文件中则使用符号。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/exports
此选项显示从可执行文件或 dll 导出的所有定义。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/fpo
此选项显示框架指针优化 (fpo) 记录。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/headers
此选项显示文件头和每节的头。当用于库时,显示每个成员对象的头。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/imports[:file]
此选项显示导入到可执行文件或 dll 的 dll 列表(静态链接的和延迟加载)和上述每个 dll 的各个导入。
可选 file 规范允许指定仅显示某个 dll 的导入。例如:
dumpbin /imports:msvcrt.dll
此选项显示的输出与 /exports 输出相似。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/linenumbers
此选项显示 coff 行号。如果对象文件是用程序数据库 (/zi)、c7 兼容 (/z7) 或仅限行号 (/zd) 编译的,则它包含行号。如果可执行文件或 dll 是与生成调试信息 (/debug) 链接的,则它包含 coff 行号。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/linkermember[:<1|2>]
此选项显示库中定义的公共符号。指定参数 1 将按对象顺序显示符号及其偏移量。指定参数 2 将显示对象的偏移量和索引号,然后按字母顺序列出这些符号及每个符号的对象索引。若要两个输出都获得,指定不带数字参数的 /linkermember。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/loadconfig
此选项转储 image_load_config_directory 结构,此结构是由 windows nt 加载程序使用并在 winnt.h 中定义的可选结构。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/out:filename
此选项指定输出的 filename。默认情况下,dumpbin 将信息显示到标准输出。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/pdbpath[:verbose] filename
此处: filename 要为其查找匹配 .pdb 文件的 .dll 或 .exe 文件名。 verbose(可选) 报告曾尝试在其中定位 .pdb 文件的所有目录。 备注
/pdbpath 将沿调试器搜索 .pdb 文件的同一路径搜索计算机,并将报告哪些 .pdb 文件(若有)和 filename 中指定的文件相对应。
使用 visual studio 调试器时可能会遇到问题,这是因为调试器对调试文件的不同版本使用 .pdb 文件。
/pdbpath 将沿下列路径搜索 .pdb 文件: 检查可执行文件驻留的位置。 检查写入可执行文件的 pdb 的位置。这通常是图像被链接时的位置。 沿 visual studio ide 中配置的搜索路径检查。 沿 _nt_symbol_path 和 _nt_alt_symbol_path 环境变量中的路径检查。 在 windows 目录中检查。
/pdata
仅用于 risc 处理器。
此选项从图像或对象转储异常表 (.pdata)。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/rawdata[:<1|2|4|8|none[ ,number]]
此选项显示文件中每节的原始内容。参数控制显示格式,如下所示:
参数结果1默认值。内容以十六进制字节显示,如果内容具有打印的表示形式,则还显示为 ascii 字符。2内容显示为十六进制的 2 字节值。4内容显示为十六进制的 4 字节值。8内容显示为十六进制的 8 字节值。none取消显示原始数据。此参数对控制 /all 输出很有用。number显示的行被设置为每行具有 number 个值的宽度。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/relocations
此选项显示对象或图像中的任何重定位。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/section:section
此选项限制与指定的 section 有关的信息的输出。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/summary
此选项显示有关节的最少信息(包括总大小)。如果未指定其他选项,则此选项为默认值。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/symbols
此选项显示 coff 符号表。符号表存在于所有对象文件中。而对于图像文件,只有当它是与 /debug 链接的时,它才包含 coff 符号表。
下面是关于 /symbols 输出的说明。通过查阅 winnt.h(image_symbol 和 image_aux_symbol)或 coff 文档,可找到有关 /symbols 输出含义的附加信息。
假设有下列示例转储:
dump of file main.objfile type: coff objectcoff symbol table000 00000000 debug notype filename | .file main.cpp002 000b1fdb abs notype static | @comp.id003 00000000 sect1 notype static | .drectve section length 26, #relocs 0, #linenums 0, checksum 722c964f005 00000000 sect2 notype static | .text section length 23, #relocs 1, #linenums 0, checksum 459ff65f, selection 1 (pick no duplicates)007 00000000 sect2 notype () external | _main008 00000000 undef notype () external | ?mydump@@yaxxz (void __cdecl mydump(void))string table size = 0x10 bytessummary 26 .drectve 23 .text
对于以符号号码开头的行,下列说明描述了含有与用户相关的信息的列: 开头的 3 位数字是符号索引/号码。 如果第三列包含 sectx,则符号在对象文件的那一节中定义。但如果出现 undef,则它不在那个对象中定义并且必须在其他地方被解析。 第五列 (static, external) 说明符号是否只在那个对象的内部可见,或者是否是公共的(外部可见)。静态符号 _sym 不会链接到公共符号 _sym;这些符号是名为 _sym 的函数的两种不同实例。
编号行中的最后一列是符号名(修饰名和未修饰名)。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。
/unwindinfo
在程序图像(例如 exe 和 dll)中转储结构化异常处理 (seh) 表的展开描述符。/unwindinfo 仅适用于 ia64 图像。
只有 /headers dumpbin 选项可用于由 /gl 编译器选项产生的文件。