在应用程序关闭Visual Studio 2013中显示哪些对象处于活动状态

时间:2015-09-01 09:13:28

标签: c++ visual-studio-2013

有没有办法让visual studio 2013在调试模式下关闭应用程序时显示哪些对象存活?在对象转储开始之前以可读格式(不是内存地址而是对象名称)。问题是我有这个大项目而且我没有编写析构函数(我告诉自己我以后会这样做)现在好了,我现在无法分辨哪些对象需要正确销毁。当我关闭应用程序时,我所拥有的就是很多Live对象。因此,如果有办法显示活着的对象的名称(或更好的类型)将非常有用。

PS:我很抱歉,如果这样的话已经存在,但我找不到任何东西。

PSS:我知道不要写破坏者的坏习惯......从现在开始我会马上写下来。

2 个答案:

答案 0 :(得分:0)

我不知道这些功能,但恕我直言,你不需要它:

  1. 即使您知道那些活着的物体,也无法确定应该销毁这些活物的父物体和析构物

  2. 销毁活动对象在应用程序关闭时并不那么重要,因为操作系统会自动清理所有活动对象(尽管并不总是合适)。

  3. 所以我认为开始为具有构造函数或动态分配资源的所有对象编写析构函数会更好。每个析构函数都会改进您已经运行的应用程序。

答案 1 :(得分:0)

对象生命周期视图

  • 在Performance Session属性页上检查了另外收集.NET对象生存期数据时,可以使用Object Lifetime视图。

  • .NET Framework的垃圾收集器管理应用程序的内存分配和释放。为了优化垃圾收集器的性能,托管堆分为三代:0,1和2.运行时的垃圾收集器在第0代存储新对象。在集合中生存的对象将被提升并存储在第1代和2。

  • 垃圾收集器通过释放整代对象来回收内存。对于由配置文件应用程序创建的对象,“对象生命周期”视图显示对象的数量和大小以及它们被回收的生成。

实例数据

  • 实例数据表示在概要分析运行中创建的类型的对象数,以及垃圾回收器释放对象的生成。

  • 您可以查看在分析运行结束前未解除分配的实例。

来源:https://msdn.microsoft.com/en-us/library/ms242731(v=vs.120).aspx