当我在别人的机器上调试问题时,我做的第一件事就是查看modules窗口。按版本排序并看到一个不属于的dll可以帮助立即诊断配置问题,并节省许多调试痛苦。

下面介绍下各列的意思:

  • Name:
    模块名称。
  • Path:
    PE在文件系统上的位置。当您希望找到正确的PE以开始使用命令行工具进行查询时,这非常有用。
  • Optimized:这是针对托管代码的。它告诉您,当从MSIL转到目标平台本机指令集时,JIT编译器是否使用了优化。
  • User Code:在调试器选项中,它也被称为“只是我的代码”。如果您刚刚打开了我的代码,并且dll已优化或没有符号,我们将把它视为“非用户”代码。这意味着调用堆栈窗口中的所有帧都将折叠到一个[非用户代码]帧之后。默认情况下,这个特性是关闭的C++,以及VB和C用户配置文件。您可以在Tools/options/Debugging/Enable-Just-My-Code下切换它。“JMC”的全部分支比简单地隐藏调用堆栈帧要大得多。它包括遍历非用户代码,一直到代码开始运行的地方(并且执行得很快)。Mike Stall在博客中提到了其中一些。
  • Symbol Status:这将告诉您是否加载了符号。它还可以告诉您它们是否被剥离(实际上只是一个本地dll问题),或者devenv是否只是加载了导出。如果您正在执行崩溃转储调试,它还可以判断是否已找到二进制文件。右键单击上下文菜单,您可以加载符号,跳转到“符号设置…”对话框,还可以查看我们搜索符号的位置。
  • Symbol File:pdb文件所在的位置。上下文菜单项“符号加载信息…”可以告诉您调试器查找符号的位置。
  • Order:加载顺序
  • Version: dll的版本信息。这对于将相关组件组合在一起非常有用,并且通常会在有人的版本不好时向您显示。查看我们在visual studio版本字符串中保留的信息量。
  • Timestamp: 这是真正的交易-链接器(或.Net编译器)生成并将PE发送到世界上时的内部时间戳。
    看看这个:
    C:\Program Files\Internet Explorer>dir iexplore.exe
     Volume in drive C has no label.
     Volume Serial Number is 2CAB-3E87

    Directory of C:\Program Files\Internet Explorer

    08/04/2004  05:00 AM            93,184 IEXPLORE.EXE
    文件系统的时间戳是什么。如果你想知道它什么时候落在你的硬盘上就好了。对于确定它比过程中的所有相关组件都晚2天构建来说,没有那么有用。
    C:\Program Files\Internet Explorer>dumpbin /headers IEXPLORE.EXE | findstr time
            41107B81 time date stamp Tue Aug 03 23:00:33 2004
    这是你真正想要的。好...这是我真正想要的。这就是你在这个专栏里看到的。在VS之前的版本中,托管代码的时间戳是不太有用的文件系统时间戳。

  • Address:
    进程内存中PE的加载地址范围。最左边是一列没有标题的图标。如果图标看起来像一个小页面,则此地址是首选加载地址。如果它有一个带有红色感叹号的页面,那么这个PE在加载时被重新定位。如果你拥有这个PE,找到一个它自己的地方,它可能加载得更快。
  • Process:
    进程名:其中之一(本机或托管)。注意:如果您正在进行混合模式调试,那么许多dll实际上会在“模块”窗口中有行。一个用于“本机”dll加载。。。在某种程度上,一切都是土生土长的。一个用于托管dll加载。您可以知道它们是同一个dll,因为地址范围将匹配。基名可能不匹配,因为有时NGen的dll显示时,名称中添加了“ni”扩展名。(例如Microsoft.Build.utilities.ni.dll。)

通过单击并拖动列,可以更改“模块”窗口中列的顺序。还可以通过拖动边框来调整列的大小。另一个巧妙的技巧是通过标题栏上的上下文菜单将窗口设置为选项卡式文档。你可以在devenv的任何一个窗口中完成这项工作。

VS中的Modules窗口的更多相关文章

  1. (转载)JavaScript中的Window窗口对象

    (转载)http://www.ijavascript.cn/jiaocheng/javascript-window-65.html 例子: <html> <head> < ...

  2. C#在父窗口中调用子窗口的过程(无法访问已释放的对象)异常,不存在从对象类型System.Windows.Forms.DateTimePicker到已知的托管提供程序本机类型的映射。

    一:C#在父窗口中调用子窗口的过程(无法访问已释放的对象)异常 其实,这个问题与C#的垃圾回收有关.垃圾回收器管 理所有的托管对象,所有需要托管数据的.NET语言(包括 C#)都受运行库的 垃圾回收器 ...

  3. (转)C#在父窗口中调用子窗口的过程(无法访问已释放的对象)

    C#在父窗口中调用子窗口的过程: 1. 创建子窗口对象 2. 显示子窗口对象   笔者的程序中,主窗体MainFrm通过菜单调用子窗口ChildFrm.在窗体中定义了子窗口对象,然后在菜单项点击事件中 ...

  4. C#中关闭子窗口而不释放子窗口对象的方法

    1 在主窗口中实例化子窗口 在主窗口中实例化子窗口,而不是在按钮中实例化子窗口对象. Form2 f2 = new Form2(); 2 通过按钮来显示主窗口 在按钮中需要实现的是窗口的显示 priv ...

  5. DELPHI中MDI子窗口的关闭和打开

    DELPHI中MDI子窗口的关闭 和打开       Delphi中MDI子窗口的关闭方式默认为缩小而不是关闭,所以当你单击子窗口右上角的关闭按钮时会   发觉该子窗口只是最小化,而不是你预期的那样被 ...

  6. DELPHI中MDI子窗口的关闭 和打开

    Delphi中MDI子窗口的关闭方式默认为缩小而不是关闭,所以当你单击子窗口右上角的关闭按钮时会发觉该子窗口只是最小化,而不是你预期的那样被关闭.解决办法是在子窗口的OnClose事件处理过程中加入如 ...

  7. Android中简单活动窗口的切换--Android

    本例实现Android中简单Activity窗口切换:借助intent(意图)对应用操作(这里用按钮监听)等的描述,Android根据描述负责找对应的组件,完成组件的调用来实现活动的切换……案例比较简 ...

  8. Qt中的主窗口之菜单栏

    1.Qt中的主窗口 主窗口为建立应用程序用户界面提供了一个框架 Qt开发平台中直接支持主窗口的概念 QMainWindow是Qt中主窗口的基类 QMainWindow继承于QWidget是一种容器类型 ...

  9. MFC如何在有界面的应用程序中开启控制台窗口

    在有界面的应用程序中开启控制台窗口有时候非常有用,尤其是在调试多线程应用程序中,由于通过断点的方式调试程序时会导致线程挂起从而导致各种难于预料的结果.这时候就可以通过开启控制台窗口往窗口输出信息来查看 ...

随机推荐

  1. Windows 10 win 10 切换输入法的快捷键

    Windows 10 win 10 切换输入法的快捷键 怎么切换输入法 中文 英文 切换 Windows键 + 空格键    切换输入法 Shift+Alt    切换中英文 Windows键形状如下 ...

  2. python运维开发常用模块(四)文件对比模块difflib

    1.difflib介绍 difflib作为 Python的标准库模块,无需安装,作用是对比文本之间的差异,且支持 输出可读性比较强的HTML文档,与Linux下的diff命令相似.我们可以 使用dif ...

  3. Loj #3085. 「GXOI / GZOI2019」特技飞行

    Loj #3085. 「GXOI / GZOI2019」特技飞行 题目描述 公元 \(9012\) 年,Z 市的航空基地计划举行一场特技飞行表演.表演的场地可以看作一个二维平面直角坐标系,其中横坐标代 ...

  4. java识别死亡或者存活的对象

    那些内存需要回收 内存回收是对运行时内存区域的内存回收,其中程序计数器.虚拟机栈.本地方法栈3个区域随线程而生,随线程而灭:栈中的栈帧随着方法的进入和退出而有条不紊的执行着出栈和入栈操作.每一个栈帧中 ...

  5. docker命令集合

    #docker安装yum -y install docker-iodocker --version #启动Docker进程systemctl start dockersystemctl status ...

  6. tomcat闪退的解决思路

    用Tomcat总会遇到启动Tomcat闪退的问题. 什么叫闪退啊,就是闪一下,就退出了控制台. 都闪退了,为啥闪退也不知道呀,又没有错误信息,所以就要先阻止闪退,先看到错误信息,知道启动不起来的原因. ...

  7. Ubuntu 16.4系统下安装docker

    本文将介绍在ubuntu16.04系统下安装和升级docker.docker-compose.docker-machine. docker:有两个版本:docker-ce(社区版)和docker-ee ...

  8. ELK + kafka 分布式日志解决方案

    概述 本文介绍使用ELK(elasticsearch.logstash.kibana) + kafka来搭建一个日志系统.主要演示使用spring aop进行日志收集,然后通过kafka将日志发送给l ...

  9. SVG跟随父级DIV自适应

    后台返回过来的是这样的SVG标签 <svg width="100%" height="100%" version="1.1" xmln ...

  10. TinyMCE常用插件

    Advanced Tables 基于table插件的增强表格插件,添加了排序功能. tinymce.init({ plugins: 'table advtable', menubar: 'table' ...