VS 2014 Preview 中的本地内存诊断

[原文发表地址]Native Memory Diagnostics in VS2015 Preview [原文发表时间]2014/11/21 7:19PM 在Visual Studio 2013 Update 2 和早期发布的VisualStudio 2015, CTP, 我们发布了一个内存诊断工具, 这个工具允许开发者截取应用程序的堆快照, 然后在终止它研究堆内容。在最初发布的版本中,支持查看堆管理和本地对象。并且在第一个Visual Studio2015 update CTP中增加了支持本机类型推导和值检验。 虽然这个工具是提供VisualStudio开发者含有一个收件箱内存分析器的一个良好开端, 但是在特定的程序状态下, 它缺乏一种轻松的分析堆内容的能力。因为为了更深层的研究数据,整个程序必须关闭。 改进的内存分析器进行预览 现在在Preview上,有一个新改进的内存分析器是可用的。它允许开发人员利用调试器强大的程序流程的控制力,并且在任何破发状态可以检验他们应用程序的堆内容。这是一个很好的对新的内存分析总结经验的一个概述。一个深入的特性总结完成了指令的激活功能。(我在那里找到它?章节),  在下面的这些指令是在第一次激活这个工具。 在调试期间,简单的按下F5将会启动新的分析器。现在为了查看堆快照不需要去终止程序。 这篇文章的剩余部分将集中介绍利用本机程序的新工具和详细介绍该工具的工作流程细节。 演示:分析 a Native MFC App 要展示新的内存分析器,一个被称为FamiTracker的MFC开源芯片定序器已经被加载到Visual Studio,并且为了建立新的编译器做了简单的修改。在启动内存分析器后,在应用程序中通过注册密钥和启动调试场景利用F5,工具加载。很快内存使用情况将被显示,并且下面的堆快照也将被显示:   快照可以在不同的点及时地的捕获堆状态,例如值仅可见于最近拍照时和处于破发状态时。 在这次练习中,对于FamiTracker,初始的程序状态是初始化序列UI:                                              FamiTracker 初始化编曲界面 另一个称为编辑器工具窗口会被打开为了编辑每一个编辑器的属性:                                           FamiTracker 编辑器窗口 利用新的内存分析器,为了更好的理解应用程序的内存消耗,我们将采取堆快照跨越两种程序状态。 首先,我们截取一个基本的快照为了储存初始化的堆内容: 工具编辑框被打开,这将在代码中触发一个断点,并且在程序状态中开始了一个变化,这个函数初始化工具编辑对话框和激活其它的一些辅助功能, 这将有助于创建工具编辑器的UI。 在OnInitDialog()开始断点的位置开始截取快照, 我们看到应用程序的堆内容之前,工具编辑器对话框启动分配对象。快照将列出对象类型,数量和内存占用。 由于我们在休息状态下, 通过双击某一行或者图标: 选择一个类型可以看到针对每一个实例的所有类型的分配情况,完整值和分配的调用堆栈。下面是所有CCHannelHandlerN163[]的实例:  …