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