【问题标题】:How to do memory profiling on Windows? [duplicate]如何在 Windows 上进行内存分析? [复制]
【发布时间】:2011-05-18 09:14:26
【问题描述】:

可能重复:
Memory leak tool for C++ under Windows

我曾经在一个 Mac 项目上工作,我真正喜欢 XCode 的一件事是它的分析器。通过使用该分析器的各种设置运行我的程序,我发现了许多错误。最值得注意的是,它会告诉我我的程序的哪些部分消耗了内存,它会告诉我它是否泄漏了内存,它会告诉我它什么时候会这样做。如果我使用的是 GUI 应用程序,它甚至会显示当这些分配/泄漏/解除分配发生时我正在做什么的屏幕截图。

现在,我正在使用 Visual Studio 开发一个 Windows/C++ 项目,我怀疑该项目会消耗太多内存,并且可能还会泄漏一些内存。使用 XCode,我只需启动该分析器并立即知道发生了什么。然而,在 Visual Studio 中,我找不到这样的东西(有一个有点尴尬的性能分析器,但 CPU 时间不是我关心的问题)。

那么,您将如何搜索内存消耗过多的泄漏和代码?

【问题讨论】:

  • @Kirill:这个问题是在一年前专门针对 Visual Studio 2005 提出的。该软件现在已有五年多的历史了。无论 Visual Studio 版本如何,我都要求提供通用工具。此外,我不仅要询问泄漏,还要询问一般内存消耗。我认为这应该与您推荐的问题不同。

标签: c++ visual-studio memory-leaks profiling memory-management


【解决方案1】:

VS 中没有内置工具用于非托管应用程序的内存分析。

有关其他第三方工具,请参阅此帖子: Is it possible to detect GDI leaks from the Visual Studio debugger?

【讨论】:

    【解决方案2】:

    请参阅Application Verifier、LeakDiag、UMDH 和Debugging Tools for Windows

    所有这些都是免费的。

    有关如何使用它们的指南,请参阅Advanced Windows Debugging

    【讨论】:

    • UMDH 是 Windows 调试工具的一部分。
    • @Kirill,我知道 - 因为 OP 正在寻找与内存相关的工具,所以刚刚明确提到它。
    • UMDH 刚刚保存了我的培根。
    【解决方案3】:

    我将从使用 Perfmon.exe 工具开始(只需在“运行”提示符下键入 perfmon.exe)。使用此工具,您可以添加“私有字节”、“句柄计数”、“线程计数”等计数器,以便随着时间的推移分析您的应用程序。

    使用这个工具可以提取很多有趣的信息,MSDN 上有很多关于如何使用它的信息,它不仅限于内存泄漏,它可以对 I/O 性能和其他东西进行基准测试好吧。

    请记住,对于每种计数器类型,您都可以启用一个简短的描述来概述计数器的用途(我认为它的默认设置是关闭的)。

    【讨论】:

      猜你喜欢
      • 2014-03-30
      • 2020-11-02
      • 2012-02-01
      • 1970-01-01
      • 2011-12-03
      • 1970-01-01
      • 1970-01-01
      • 2018-10-15
      • 1970-01-01
      相关资源
      最近更新 更多