这里有人对HeapAgent有意见吗?

时间:2010-12-01 09:05:03

标签: c++ heap memory-corruption

我正在尝试追踪应用程序中发生的一些内存损坏 - 我听说过(但从未使用过)Boundschecker。有传言说,这是一种在游戏等高性能应用程序中使用缓慢的方法(这就是我正在努力修复的应用程序)。  有没有人在这里使用HeapAgent并且有什么(好的或坏的)可以说呢?

提前致谢。

3 个答案:

答案 0 :(得分:2)

我没有使用Boundschecker或HeapAgent的经验。但是,如果您尝试调试内存损坏或泄漏,Paul Nettle Memory Manager非常好。我已经使用这个内存管理器来追踪游戏中几个令人讨厌的错误。

答案 1 :(得分:0)

很抱歉迟到了 - HeapAgent 太棒了

我已经使用它多年了,并且发现它几乎在各方面都非常出色 - 它非常善于帮助追踪内存泄漏,损坏等,以及它们的API文档(允许您微调行为)是我在编程产品中见过的最好的技术写作之一。

例如,服务器应用程序(例如我写的)通常在启动时分配一堆内务处理内存,然后进入服务循环。我不关心内务处理数据,但我 关心每个服务循环中的泄漏。

因此,使用API​​,我的应用程序在每个服务循环的顶部增加了HeapAgent“checkpoint”,并且当前检查点将附加到每个分配。

使用GUI工具,可以很容易地使用检查点> N过滤所有内容,其中N是服务循环入口处的值:我们可以看到每个循环后是否还有剩余的东西。

如果您的服务循环在循环结束后分配应该的内容,您可以按预期标记该分配,以便“有任何泄露?”测试不会抱怨它。

每个分配跟踪分配它的位置,以及当时的callstack,所以你的低级辅助函数(“mypersonalalloc(..)”)仍然显示谁叫 it < / em>的。它发现了很多东西......

技术支持非常出色。

缺点是GUI非常糟糕,(ala Windows 3.1 - 真的!)但这是一个小问题,并没有真正影响功能。

我没有使用过此处或其他任何地方提及的任何其他产品,但我对HeapAgent感到非常满意。

~~~史蒂夫[仅限“满意的客户”免责声明]

答案 2 :(得分:0)

我设法为HeapAgent进行了试用。这并不容易,MicroQuill响应速度不是很快,但我最终得到了它。当wxWidgets定义了自己与HeapAgent冲突的内存分配例程时(仅在编译Debug构建时),我遇到了问题,并且我询问API(似乎是未记录的)是否允许从代码中测试堆。我从来没有得到过帮助或答案(虽然我确实得到了关于没有得到它们的道歉)。

在我看来,MicroQuill并不想出售HeapAgent。它是一个旧的应用程序,具有非常古老的UI,并没有真正开发一段时间。它仅支持32位应用程序,其错误对话框很小,无法调整大小。显然,没有人可以帮助用户解决问题。

我仍然认为这是一个很好的概念,它确实有助于找到我遇到的问题。我想如果我得到一些帮助,我可能已经买了它。然而,鉴于我的反应,我唯一可以说的是:联系MicroQuill进行试用并亲自试用。