如何用dumpbin.exe检查编译器生成的托管模块所嵌入的信息
- 开启CMD
- 运行到dumpbin目录下:D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin
- 运行命令VCVARS32.BAT,配置环境如果不运行vcvars32.bat,会出现如下提示:  
- 运行dumpbin命令
 D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin>dumpbin /exports E:\ DSTCode\Web\DSTWeb\bin\DSTWeb.dll Microsoft (R) COFF/PE Dumper Version 12.00.21005.1 Copyright (C) Microsoft Corporation. All rights reserved. 
 
 Dump of file E:\DSTCode\Web\DSTWeb\bin\DSTWeb.dll 
 File Type: DLL 
 Summary 
 2000 .reloc 2000 .rsrc 1A0000 .text 
 D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin> 
 
- dumpbin 命令语法及Option:dumpbin [options] files… 
 
| # | Option | Remark | 
| 1 | /ALL | 此选项显示除代码反汇编外的所有可用信息。使用 /DISASM 显示反汇编。可以与 /ALL 一起使用 /RAWDATA:NONE 来省略文件的原始二进制详细资料。 只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。 | 
| 2 | /ARCHIVEMEMBERS | 此选项显示有关库成员对象的最少信息。 只有 /HEADERS DUMPBIN选项可用于由 /GL 编译器选项产生的文件。 | 
| 3 | /CLRHEADER file | 用 /clr 生成的图像文件。 备注 CLRHEADER 显示有关在任何托管程序中使用的 .NET 头的信息。输出显示 .NET 头及其中各节的位置和大小(以字节计)。 File Format Spec.doc 描述 .NET 头中的信息。NET SDK 将 File Format Spec.doc 安装在 Tools Developers Guide 目录中。 只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。 | 
| 4 | /DIRECTIVES | 此选项转储图像中由编译器生成的 .directive 节。 只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。 | 
| 5 | /DEPENDENTS | 转储图像从中导入函数的 DLL 的名称。不要转储导入函数名。 只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。 | 
| 6 | /DISASM | 此选项显示代码段的反汇编,如果出现在文件中则使用符号。 只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。 | 
| 7 | /EXPORTS | 此选项显示从可执行文件或 DLL 导出的所有定义。 只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。 | 
| 8 | /FPO | 此选项显示框架指针优化 (FPO) 记录。 只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。 | 
| 9 | /HEADERS | 此选项显示文件头和每节的头。当用于库时,显示每个成员对象的头。 只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。 | 
| 10 | /IMPORTS[:file] | 此选项显示导入到可执行文件或 DLL 的 DLL 列表(静态链接的和延迟加载)和上述每个 DLL 的各个导入。 可选 file 规范允许指定仅显示某个 DLL 的导入。 例如: dumpbin /IMPORTS:msvcrt.dll 此选项显示的输出与 /EXPORTS 输出相似。 只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。 | 
| 11 | /LINENUMBERS | 此选项显示 COFF 行号。如果对象文件是用程序数据库 (/Zi)、C7 兼容 (/Z7) 或仅限行号 (/Zd) 编译的,则它包含行号。如果可执行文件或 DLL 是与生成调试信息 (/DEBUG) 链接的,则它包含 COFF 行号。 只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。 | 
| 12 | /LINKERMEMBER[:{1|2}] | 此选项显示库中定义的公共符号。指定参数 1 将按对象顺序显示符号及其偏移量。指定参数 2 将显示对象的偏移量和索引号,然后按字母顺序列出这些符号及每个符号的对象索引。若要两个输出都获得,指定不带数字参数的 /LINKERMEMBER。 只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。 | 
| 13 | /LOADCONFIG | 此选项转储 IMAGE_LOAD_CONFIG_DIRECTORY 结构,此结构是由 Windows NT 加载程序使用并在 WINNT.H 中定义的可选结构。 只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。 | 
| 14 | /OUT:filename | 此选项指定输出的 filename。默认情况下,DUMPBIN 将信息显示到标准输出。 只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。 | 
| 15 | /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 编译器选项产生的文件。 | 
| 16 | /RAWDATA[:{1|2|4|8|NONE[,number]] | 此选项显示文件中每节的原始内容。参数控制显示格式,如下所示: 参数 结果 1 默认值。内容以十六进制字节显示,如果内容具有打印的表示形式,则还显示为 ASCII 字符。 2 内容显示为十六进制的 2 字节值。 4 内容显示为十六进制的 4 字节值。 8 内容显示为十六进制的 8 字节值。 NONE 取消显示原始数据。此参数对控制 /ALL 输出很有用。 Number 显示的行被设置为每行具有 number 个值的宽度。   只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。 | 
| 17 | /RELOCATIONS | 此选项显示对象或图像中的任何重定位。 只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。 | 
| 18 | /SECTION:section | 此选项限制与指定的 section 有关的信息的输出。 只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。 | 
| 19 | /SUMMARY | 此选项显示有关节的最少信息(包括总大小)。如果未指定其他选项,则此选项为默认值。 只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。 | 
| 20 | /SYMBOLS | 此选项显示 COFF 符号表。符号表存在于所有对象文件中。而对于图像文件,只有当它是与 /DEBUG 链接的时,它才包含 COFF 符号表。   下面是关于 /SYMBOLS 输出的说明。通过查阅 winnt.h(IMAGE_SYMBOL 和 IMAGE_AUX_SYMBOL)或 COFF 文档,可找到有关 /SYMBOLS 输出含义的附加信息。   假设有下列示例转储:   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 对于以符号号码开头的行,下列说明描述了含有与用户相关的信息的列:   开头的 3 位数字是符号索引/号码。 如果第三列包含 SECTx,则符号在对象文件的那一节中定义。但如果出现 UNDEF,则它不在那个对象中定义并且必须在其他地方被解析。 第五列 (Static, External) 说明符号是否只在那个对象的内部可见,或者是否是公共的(外部可见)。静态符号 _sym 不会链接到公共符号 _sym;这些符号是名为 _sym 的函数的两种不同实例。 编号行中的最后一列是符号名(修饰名和未修饰名)。   只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。 | 
| 21 | /UNWINDINFO | 在程序图像(例如 exe 和 dll)中转储结构化异常处理 (SEH) 表的展开描述符。/UNWINDINFO 仅适用于 IA64 图像。 只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。 | 
如何用dumpbin.exe检查编译器生成的托管模块所嵌入的信息的更多相关文章
- 一、源代码-面向CLR的编译器-托管模块-(元数据&IL代码)
		本文脉络图如下: 1.CLR(Common Language Runtime)公共语言运行时简介 (1).公共语言运行时是一种可由多种编程语言一起使用的"运行时". (2).CLR ... 
- 如何用CSC.exe来编译Visual C#的代码文件
		原文:如何用CSC.exe来编译Visual C#的代码文件 C#的编译过程 如何用CSC.exe来编译Visual C#的代码文件 Csc.exe 编译器的位置路径:C:\Window ... 
- 链接器link.exe 编译器cl.exe 资源编译器rc.exe
		原文地址:https://blog.csdn.net/biggbang/article/details/24433065 1.cl.exe文件是Visual C\C++的编译器,它将程序源代码文件编译 ... 
- 使用PageHeap.EXE或GFlags.EXE检查内存越界错误 (转)
		2011-05-27 20:19 290人阅读 评论(0) 收藏 举报 microsoftdebuggingstructureoutputimagefile 必先利其器之一:使用PageHeap.EX ... 
- 使用PageHeap.EXE或GFlags.EXE检查内存越界错误
		必先利其器之一:使用PageHeap.EXE或GFlags.EXE检查内存越界错误 Article last modified on 2002-6-3 ------------------------ ... 
- ActiveX: 如何用.inf和.ocx文件生成cab文件
		ActiveX: 如何用.inf和.ocx文件生成cab文件 
- 利用GCC编译器生成动态链接库和静态链接库
		转载请标明:http://www.cnblogs.com/winifred-tang94/ 1.编译过程 gcc –fPIC –c xxx.c 其中-fPIC是通知gcc编译器产生位置独立的目标代码. ... 
- dumpbin.exe
		有时候我们想查看一个exe引用了哪些动态库,或者我们想看某个动态库包含哪些接口函数,这个时候可以使用dumpbin.exe工具: 1.输入Dumpbin -imports calldll.exe查看它 ... 
- 如何用python抓取js生成的数据 - SegmentFault
		如何用python抓取js生成的数据 - SegmentFault 如何用python抓取js生成的数据 1赞 踩 收藏 想写一个爬虫,但是需要抓去的的数据是js生成的,在源代码里看不到,要怎么才能抓 ... 
随机推荐
- Android发展Singleton模式
			这是什么Singleton模式?它是Java23之间的一种模式,在Android发展也有着广泛的应用,例Calander类别,当对象是由未创建 new Calander而是Calander.getIn ... 
- Arrays.asList的那点事
			import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List ... 
- git 配置多个SSH-Key(转)
			摘要 我们在日常工作中会遇到公司有个gitlab,还有些自己的一些项目放在github上.这样就导致我们要配置不同的ssh-key对应不同的环境. 目录[-] 1,生成一个公司用的SSH-Key 2, ... 
- 每天收获一点点------Hadoop之初始MapReduce
			一.神马是高大上的MapReduce MapReduce是Google的一项重要技术,它首先是一个编程模型,用以进行大数据量的计算.对于大数据量的计算,通常采用的处理手法就是并行计算.但对许多开发者来 ... 
- JavaEE(15) - JPA实体继承
			1. 实体继承映射的三种策略 #1. 整个类层次对应一张表 #2. 连接子类 #3. 每个具体类对应一张表 2. 使用抽象实体 3. 使用非实体父类 4. 重定义子类实体的外键列 ---------- ... 
- 【iOS】多线程GCD
			GCD(Grand Central Dispatch) : 牛逼的中枢调度器.苹果自带,纯C语言实现,提供了许多且强大的函数,它能够提高代码的运行效率与多核的利用率. 一.GCD的基本使用 1.GCD ... 
- ASP.NET验证控件
			在此过程中房间的收费制度时,.为了验证文本框是否为空.用户存在.合法等等.我们都要单独写代码.学习了ASP.NET的验证控件,省了非常多事. ASP.NET能够轻松实现对用户输入的验证. 让我们好好回 ... 
- 新秀系列C/C++经典问题(四)
			一个主题:查找最小的k个元素 输入n个整数.输出当中最小的k个. . 分析:这道题最简单的思路莫过于把输入的n个整数排序,这样排在最前面的k个数就是最小的k个数. 仅仅是这样的思路的时间复杂度为O(n ... 
- Java批处理操作
			批量,可以大大提高众多增加.删除.变化的步伐,它是有一个非常大的数据处理效率大收益. 的"连接池"相似.事实上就是先将多次操作(增删改)打包.然后再一次发送运行 主要用到两个方法: ... 
- 安德鲁斯 建立与各种听众自己定义的ScrollView
			=== 建立与各种听众自己定义的ScrollView === 尽管安卓5.1已经release, 可是ScrollView的封装和对外API依然少的可怜, 尽管它优化得非常好了. 所以问题来了: Sc ... 
