【问题标题】:Visual Leak Detector does not work视觉泄漏检测器不工作
【发布时间】:2011-07-31 21:22:17
【问题描述】:

我刚刚开始使用Visual Leak Detector for Visual C++ 2008/2010

当我在小型应用程序上运行它时(只有几行未删除的分配),它工作得很好。

现在我想在我更大的应用程序(wxWidgets 应用程序,2 个线程)中运行它,但是当我包含

#include <vld.h>

我的应用程序没有完全启动。创建 Gui 时它开始循环。 Somethismes 应用程序完全加载,但是当我按下某个按钮时再次卡住...

当我点击暂停按钮时,要查看正在处理的代码,我只看到

有人遇到过类似的问题吗?

有没有办法让它工作?

【问题讨论】:

  • 您是否尝试过在更简单的 2 线程程序上对其进行测试?也许它有多线程问题。此外,如果您的程序需要大量资源,请记住泄漏检测器往往是主要的性能损失。您可能只是目睹了严重的缓慢(或者可能没有)。
  • @Brandon Bohrer:我没有尝试过更简单的 2 线程程序,但我会……这不仅仅是慢启动,因为它在几秒钟内启动了其他一些“幸运”时间。
  • 调用堆栈包含 nvoglv32.dll。你确定你在看正确的线程吗? NVidia 驱动程序会启动更多线程,在 OpenGL 应用程序中进行实际渲染。
  • 您可以使用 deleaker 或类似的工具来检测内存泄漏...快速简便
  • @JohnSmith 谢谢你,约翰,我去看看

标签: c++ visual-studio-2010 memory-leaks memory-leak-detector visual-leak-detector


【解决方案1】:

这并不完全是对这个特定问题的回答,但它解决了我的问题,我想将它记录在其他人可能会发现它对他们有帮助的地方。

我正在用 vld 链接一个程序并得到了

fatal error LNK1120: 1 unresolved externals
error LNK2001: unresolved external symbol "__declspec(dllimport) class     VisualLeakDetector vld" (__imp_?vld@@3VVisualLeakDetector@@A)

我做了一个 vld.lib 的垃圾箱,发现它有一个外部调用

      F26 __imp_?g_vld@@3VVisualLeakDetector@@A

注意“g_”

所以改变了我的 vld.h 从

#pragma comment(linker, "/include:__imp_?vld@@3VVisualLeakDetector@@A")
to
#pragma comment(linker, "/include:__imp_?g_vld@@3VVisualLeakDetector@@A")

然后它链接并工作得很好。

再次,希望谷歌能够为有 vld 链接问题的人找到这个答案。

【讨论】:

    【解决方案2】:

    Visual Leak Detector 使应用程序运行非常缓慢,请耐心等待。

    您正在运行单个二进制文件吗?

    当我的程序被拆分为运行时加载的主可执行文件和库时,我遇到了问题。

    解决方案是在任何地方执行#include,尤其是可执行文件。

    请注意,如果您想针对代码的特定部分,可以使用 VLDDisable 和 VLDEnable,请注意这些工作每个线程。在一个线程中禁用不会改变其他线程中发生的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-14
      • 2023-03-11
      • 1970-01-01
      相关资源
      最近更新 更多