Visual Studio 诊断 - 内存使用情况快照显示 0 分配

Chr*_*isz 5 c++ native memory-profiling visual-studio-2015

我很长一段时间忽略了这个工具,因为它只是.NET。

根据 MSDN 的说法,该诊断工具适用于在 Visual Studio 2015 中以“调试”方式编译的本机代码。

我正在关注: https ://learn.microsoft.com/en-us/visualstudio/profiling/memory-usage

我在“诊断工具”窗口的“内存使用情况”选项卡下启用了“堆分析”。然后,我重建所有项目,确保每个项目的工具集都是“Visual Studio 2015”,并确保为每个 dll 或 exe 项目构建 PDB。当客户端连接到我的进程时,以及在向客户端发送数据之后,我在 main 处设置了一个断点。其间有数千个对 new 的调用。每次我点击“拍摄快照”。当我单击“拍摄快照”时,会出现一行,其中包含时间、分配和堆大小。后两者被归零。

如果我对我的一个单元测试执行相同的操作,它们就会被填写,我可以按照文档中的描述进行深入研究。

我应该寻找什么才能让它与我的主要项目一起工作?是否有某些链接设置?我构建静态库和动态库重要吗?有什么具体需要寻找的吗?

小智 4

我也遇到过类似的问题(vs2015 或 vs2017 显示堆上有 0 分配)。然后我注意到我的 gflags 启用了全页堆验证(可以通过 gflags /p 检查)。

我刚刚禁用了它,现在堆快照又开始工作了:-)

  • 为了向遇到相同问题的任何人澄清,使用应用程序验证器(基本上是 gflags 的 UI)时可能会发生这种情况。清除 AV 中的标志后,堆分析和快照在 VS2015 和 2017 中都可以正常工作。 (2认同)