这里有人对 HeapAgent 有意见吗?

发布于 2024-10-04 23:57:48 字数 150 浏览 13 评论 0原文

我正在尝试追踪应用程序中发生的一些内存损坏 - 我听说过(但从未使用过)Boundschecker。有传言说,在游戏等高性能应用程序中使用它会减慢速度(这就是我正在尝试修复的应用程序)。 这里有人使用过 HeapAgent 并对它有什么看法(好或坏)吗?

提前致谢。

I'm trying to track down some memory corruption going on in an app - I've heard of (but never used) Boundschecker. Rumour is that it's way to slow to use in a high performance application like a game (which is what the app I'm trying to fix is).
Has anyone here used HeapAgent and have anything (good or bad) to say about it?

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

偏爱自由 2024-10-11 23:57:48

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

I don't have experience using Boundschecker or HeapAgent. But if you are trying to debug memory corruption or leaks, Paul Nettle Memory Manager is very good. I have used this memory manager to track down few nasty bugs in a game.

傲鸠 2024-10-11 23:57:48

抱歉迟到了 - HeapAgent 非常棒

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

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

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

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

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

每个分配都会跟踪分配的位置以及当时的调用堆栈,因此您的低级辅助函数(“mypersonalalloc(..)”)仍然显示谁调用了它 。它发现了很多东西......

技术支持非常出色。

缺点是 GUI 非常过时(Windows 3.1 - 真的!),但这是一个小问题,不会真正影响功能。

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

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

Sorry to be late to the game - HeapAgent is fantastic.

I've used it for years and find it superb in pretty much every way - it's very good at helping track down memory leaks, corruptions, etc., and their API documentation (which allows you to fine-tune the behavior) is among the best tech writing I've ever seen in a programming product.

For instance, server applications (such as I write) usually allocate a bunch of housekeeping memory at startup , and then enter a service loop. I didn't care about the housekeeping data, but I did care about a leak in every service loop.

So using the API, my app incremented the HeapAgent "checkpoint" at the top of every service loop, and the current checkpoint is attached to every allocation.

Using the GUI tool, it's easy to filter all with checkpoint >N, where N was the value at the entry to the service loop: we can see if there is stuff remaining behind after each loop.

If your service loop allocates something that should stick around after the end of the loop, you can mark that allocation as intended so that the "has anything leaked?" test won't complain about it.

Each allocation keeps track of the location where it was allocated from, as well as the callstack at the time, so your low-level helper functions ("mypersonalalloc(..)") still show who called it. It's found so much stuff...

Tech support has been excellent.

The downside is that the GUI is very badly dated, (ala Windows 3.1 - really!) but that's a minor issue that doesn't really affect the functionality.

I have not used any of the other products mentioned here or anywhere else, but I could not be more pleased with HeapAgent.

~~~ Steve ["happy customer only" disclaimer applies]

一笔一画续写前缘 2024-10-11 23:57:48

我成功试用了 HeapAgent。这并不容易,MicroQuill 的响应速度不是很快,但我最终还是明白了。当 wxWidgets 定义自己的内存分配例程与 HeapAgent 的内存分配例程冲突时(仅在编译调试版本时),我遇到了问题,我询问 API(似乎未记录)是否允许从代码测试堆。我从未得到帮助或答案(尽管我确实得到了关于没有得到它们的道歉)。

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

我仍然认为这是一个很好的概念,它确实在一定程度上帮助我找到了问题。我想如果我得到一些帮助,我可能会买它。然而,鉴于我得到的答复,我唯一能说的是:联系 MicroQuill 进行试用并亲自尝试一下。

I managed to get a trial for HeapAgent. It wasn't easy, MicroQuill aren't very fast to respond, but I got it eventually. I had a problem when wxWidgets defined its own memory allocation routines which conflicted with HeapAgent's (only when compiling a Debug build), and I asked whether the API (which seemed to be undocumented) allowed testing the heap from the code. I never got help or answers (though I did get an apology about not getting them).

It looks to me like MicroQuill doesn't really want to sell HeapAgent. It's an old app with a very old UI, which hasn't really been developed for a while. It only supports 32-bit apps and its error dialog boxes are small and cannot be resized. Apparently there's no one there which can help users with problems.

I still think it's a good concept, and it did help to an extent in finding a problem I had. I imagine that if I got some help with it I might have bought it. However given the response I had the only thing I can say is: contact MicroQuill for a trial and try it yourself.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文