【问题标题】:Memory leak checking on Windows with QT and MinGW32使用 QT 和 MinGW32 在 Windows 上进行内存泄漏检查
【发布时间】:2011-05-30 11:09:25
【问题描述】:

最近我一直在使用 QT Creator 进行 C++ 开发。一切都很好,我快要打包和分发我的应用程序了。但显然,在发布任何版本之前,您最好确保一切正常。所以我正处于测试阶段,有些东西告诉我我有一些轻微的记忆问题。没什么大不了的,但我喜欢沉迷于这些 ;-)。

所以我决定尝试一些内存泄漏检测库。对于初学者,我查看了this 问题。由于成本原因,我忽略了 Purify 和 Insure++。其他人建议使用 MSVC 编译器,这样我就可以使用 CRT 内存验证例程。我考虑过但现在决定不这样做,因为它会对在 QT Creator 中使用调试器产生影响。

然后我偶然发现了DUMA,我必须使用 QT 附带的 MinGW32 编译器进行编译。但是,我发现它与 QT 并不能很好地配合使用,因为存在大量的分段错误。我知道 DUMA 是这样运作的,但我很确定我并没有像 DUMA 试图让我相信的那样把事情搞砸。

我尝试的另一件事是google-performance-tools,很遗憾我无法使用 QT 提供的 MinGW32 版本进行编译,即使我添加了所需的依赖项。

所有这一切都让我想到了我的问题:对于想要检查他们的程序是否存在内存泄漏的 QT Creator 开发人员,是否有任何可行的解决方案?

谢谢,

【问题讨论】:

    标签: c++ qt heap-memory mingw32


    【解决方案1】:

    就我个人而言,我发现 valgrind / memcheck / callgrind / kcachegrind 组合功能太强大了,不能忽略内存泄漏和性能分析。免费(免费)特别好,因为我个人负担不起其他一些专业工具的费用。

    我已经从事跨平台 Qt 应用程序工作几年了。在开发过程中,当我想测试特性和功能时,我会在 windows 和 linux 之间来回切换。但是,我总是在 linux 中进行性能分析。我发现的内存泄漏和性能问题总是由我的开发团队在 Qt 之上注入的。因此,当这些问题得到解决后,无论在 Linux 中被识别出来,好处都会延续到 Windows 中。

    我建议您研究设置一个可以测试的纯 linux 构建环境。也许对您来说最简单的解决方案是创建一个虚拟机来进行性能分析。我的首选组合是VirtualBoxUbuntu

    【讨论】:

    • 感谢您提供链接,尼克!
    【解决方案2】:

    也许你可以将这些库用于 windows

    Malloc 的钩子 [gnu.org] 回溯 [gnu.org] valgrind [valgrind.org]

    【讨论】:

      猜你喜欢
      • 2011-03-08
      • 2011-08-02
      • 1970-01-01
      • 2010-11-03
      • 2011-05-21
      • 1970-01-01
      • 2012-10-29
      • 2011-11-23
      相关资源
      最近更新 更多