像BoundsChecker和Purify这样的64位工具

时间:2020-03-05 18:49:20  来源:igfitidea点击:

多年来,我使用了两个很棒的工具BoundsChecker&Purify,但是这些应用程序的开发人员让我失望了,他们不再花精力进行维护或者开发它们。我们在两家公司都有公司帐户,并且它们都告诉我他们无意生产支持64位应用程序的版本。

谁能推荐支持64位本机C ++ / MFC应用程序的开源或者商业替代产品?

解决方案

回答

我使用了边界检查和其他动态分析工具,虽然体系结构有所不同,但是理论上我们要检查的代码是可以在任何后端上进行边界检查,并且结果与代码相同,或者超出边界范围否则就没有。

唯一的麻烦是要解决超过4GB的内存空间,处理无法交叉编译为32位体系结构(无源的64位目标文件等)的代码段以及常规的64位迁移问题(特定于平台的代码,例如检查0xFFFFFFFF而不是-1)

我们正在对程序进行边界检查时遇到什么其他问题?我们无法编译32位版本吗?

当然,这不是我们理想的解决方案,我们应该始终检查它们将要运行的代码,但是在这种情况下,我们可能别无选择,除非我们想自己进行边界检查(这在任何情况下都是个好主意)案子...)。

-亚当

回答

Parasoft有一个名为Insure ++的工具(链接:http://www.parasoft.com/jsp/products/quick_facts.jsp?product=Insure),它说可以做到这一点。

我已经在Linux的32位和64位应用程序上使用了Insure ++,它工作正常。当它试图解析模板/ stl代码时,有时会感到困惑,并且会崩溃。

该网址说它可以在32位和64位Windows上运行,祝我们好运!

回答

据我了解,BC 9.0将支持WOW64

回答

Viva64(http://www.viva64.com/viva64-tool/)工具提供了对64位Windows应用程序典型的错误的检测。 Viva64是C / C ++代码的类似皮棉的静态分析器。 Viva64集成到Visual Studio 2005/2008环境中,并提供用户友好的界面来测试软件项目。

回答

BoundsChecker 9.01现在终于支持VC2008和x64位。

回答

insure ++仅在检测代码时有效。我曾经尝试过。大约花了5分钟来编译大约1000行代码。由于我需要编译的项目很大,因此我很快确定Insure ++无法正常工作。

更不用说他们的报告了,或者Insure ++的输出很陈旧。运行时性能损失也很糟糕。

请注意有关numega / compuware / other_new_company的boundschecker的信息:请勿购买。它只是配置文件32位应用程序。它不执行64位应用程序。它可以安装在64位OS上。几年前,我停止在我们的应用程序上使用它。我有时会在CppUnit Tests上使用它。

总的来说,我对那里所有的本机内存泄漏工具都感到完全厌恶。它们都不起作用,或者只是在关机时锁定了应用程序。

回答

英特尔®并行检查器(http://software.intel.com/zh-cn/intel-parallel-inspector/)是Microsoft * Visual Studio的线程和内存检查插件工具;它在Windows上支持32位和64位C / C ++。这是具有30天免费评估的商业应用程序。

披露:我为英特尔工作。

回答

仅供参考:BoundsChecker 10.0在Windows XP到Windows 7上都可以在32位和64位版本上运行。它支持WOW64应用程序,还支持Visual Studio2010. 实际上,我们在Microsoft发布30天之内发布了VS2010支持。

我们正在追赶积压的订单。我们很晚才获得VS2005和VS2008支持(在BC 9.0中,2008年秋季发布),但是发生这种情况的原因有很多。奇迹是我们完全没有了。

BoundsChecker 10.5发行时,应该还包含一些其他功能。敬请关注。

披露:我为MicroFocus工作。