Debugging Windows的良好内存分析、泄漏和错误检测

Debugging Windows的良好内存分析、泄漏和错误检测,debugging,memory-leaks,profiling,bounds-checker,Debugging,Memory Leaks,Profiling,Bounds Checker,我目前正在为Windows寻找一个好的内存/泄漏检测工具。几年前,我使用了Numega的Boundschecker,非常好。现在似乎是这样 卖给了Compuware,而Compuware显然又把它卖给了另一家公司 按照最佳的“进取”传统,尝试评估当前版本的演示到目前为止非常令人沮丧: (a) 在他们的网站上没有广告价格(巨大的红色闪烁警告灯) (b) 要求提供雇员人数和其他私人信息的联系表 (c) 没有回应我的电子邮件要求评估和价格 我不得不得出结论,BoundsChecker现在是“那些”产品

我目前正在为Windows寻找一个好的内存/泄漏检测工具。几年前,我使用了Numega的Boundschecker,非常好。现在似乎是这样 卖给了Compuware,而Compuware显然又把它卖给了另一家公司

按照最佳的“进取”传统,尝试评估当前版本的演示到目前为止非常令人沮丧:

(a) 在他们的网站上没有广告价格(巨大的红色闪烁警告灯)
(b) 要求提供雇员人数和其他私人信息的联系表
(c) 没有回应我的电子邮件要求评估和价格

我不得不得出结论,BoundsChecker现在是“那些”产品之一。你知道,那种你无意中打电话,明天三个穿黑西装的男人会出现在你的办公室 他们希望与你谈论“合作伙伴关系”,而不是秘密地估量你公司的规模,因此他们可以通过向你收费获得多少好处

所以,抛开咆哮不谈,有谁能推荐一个优秀的内存检查/泄漏检测工具,它的成本是多少,以及在哪里购买的建议吗?

微软的工具非常擅长检测泄漏以及Windows上的一系列其他常见编程错误(COM、堆、TLS、锁等)


它在评测方面做的不多,但它会给你一个堆栈,当你泄漏内存时,它在哪里分配了内存,或者如果你加倍释放,它在哪里第一次被释放,等等。

我很满意,而且价格很难被击败(而且非常透明——599美元/用户)

分配探查器工作得相当好——它没有Boundschecker那么复杂(从我对Boundschecker的记忆来看),但它所做的,它做得很好——而且它还处理很多其他事情。

您可以尝试。您也可以尝试相同的评估副本


小心Compuware的边界检查器: 它在一定程度上是稳定的。它的成本约为3600美元,每年的维护费用大致相当。 但与Coverity相比,这是微不足道的。 在过去的三年里,我一直没有得到一个好的测试运行来正确地进行边界检查。这就是我不再使用它的原因,也是我不建议你使用它的原因,除了在小项目上。在大型企业应用程序上,它速度太慢,占用太多内存,根本无法工作。我是说真的,你想让你的应用程序用5分钟启动吗?您是否希望您的测试执行时间延长3倍?最糟糕的是,它的倾向是锁定。Compuware的客户支持非常有限。但bounds checker被卖给了另一家公司(不记得他们的名字),该公司的网站是如此的敏感、消毒和干燥,这让金融公司的网站看起来很有趣。 但是BoundsChecker的致命问题是它只有32位。因此,如果您需要分析一个占用大量内存(超过1G)的大型应用程序,那么您就是运气不佳。边界检查器将从你的应用程序中消耗2到3 Gig的内存。有了32位的应用程序,你就知道4个Gig是最棒的

如果你雇一个人来照顾它,Coverity是很棒的。说真的,盖房子比我的房子贵。更不用说我的公司会雇佣一个人来照看这该死的东西了。这需要24小时才能完成,真神奇。它没有比在警告级别4编译代码并启用“代码分析”(在VisualStudio中)更神奇的功能

我尝试过其他内存泄漏工具(针对本机代码)。它们都很浪费时间,太复杂,或者只是简单地锁定了系统。 我非常讨厌内存分析器的整个领域,所以我只想回到使用调试CRT。或者我自己写


至于代码覆盖工具,Bullseye轻而易举地获胜。为什么内存泄漏检测器不能像bullseye一样可靠地工作呢?

这条线索已经过时了。诚然,我们无法说服Micro Focus在其主要网站上发布价格,但您可以在ComponentSource上获得价格,而且我们不会派出穿着深色西装的代理8-/定价取决于您是要求单用户许可证还是多用户许可证,以及您是否只需要BoundsChecker,或者你想要整个DevPartner工作室。有关详细信息,请参阅


不管怎么说,我们并没有停止开发这个产品。2月4日,我们发布了10.5版,它(最终)支持Vista和Windows7上的64位应用程序(AMD64、Intel64,而不是安腾)。沿途修复了不少旧bug。下一次更新将包括对XP64和Windows 7 SP1的支持,以及对Visual Studio 2010 SP1的支持。

不幸的是,我唯一能添加的是Amen。我也同意1000%。即使支持64位应用程序,BoundsChecker仍然会锁定,需要10分钟来启动我的非微型应用程序,有时也无法真正发现(甚至是故意的!!!)内存泄漏。我现在才完全意识到1997年Compuware收购NuMega带来的灾难(对于该产品而言)。作为一家上市公司的一部分,所有以前存在的产品都进行了“维护”,由较少的程序员来完成这项工作,因为该公司试图找到新的(也就是没有人知道其缺点的东西)销售方式,尽可能利用旧的技术。在任何情况下,只有十分钟?这还不错,因为在不使用编译器指令插入时,使用BoundsChecker的速度损失通常为80-100倍,是使用指令插入时的几倍。这就是说,在过去的几个月里,我找到了一些简单的问题来解决,这些问题使仪器的性能提高了30%。这些变化主要是为了消除善意但信息不完全的开发人员引入的冗余。如果有人对Micro Focus DevPartner Studio或BoundsChecker有任何疑问,请访问我们的论坛。