【发布时间】:2010-09-08 03:43:39
【问题描述】:
多年来,我使用了两个很棒的工具BoundsChecker 和Purify,但是这些应用程序的开发人员让我失望了,他们不再努力维护或开发它们。我们在两家公司都有公司帐户,他们都告诉我他们无意生产支持 64 位应用程序的版本。
谁能推荐支持 64 位原生 C++/MFC 应用程序的开源或商业替代方案?
【问题讨论】:
标签: c++ mfc bounds-checker purify
多年来,我使用了两个很棒的工具BoundsChecker 和Purify,但是这些应用程序的开发人员让我失望了,他们不再努力维护或开发它们。我们在两家公司都有公司帐户,他们都告诉我他们无意生产支持 64 位应用程序的版本。
谁能推荐支持 64 位原生 C++/MFC 应用程序的开源或商业替代方案?
【问题讨论】:
标签: c++ mfc bounds-checker purify
Viva64 (http://www.viva64.com/viva64-tool/) 工具可检测 64 位 Windows 应用程序的典型错误。 Viva64 是一个类似于 lint 的 C/C++ 代码静态分析器。 Viva64 集成到 Visual Studio 2005/2008 环境中,并提供用户友好的界面来测试您的软件项目。
【讨论】:
Parasoft 有一个名为 Insure++ 的工具(链接:http://www.parasoft.com/jsp/products/quick_facts.jsp?product=Insure),它说它会做到这一点。
我在 Linux 上的 32 位和 64 位应用程序上使用了 Insure++,它运行良好。它有时会在尝试解析模板/stl 代码时感到困惑,并且会崩溃。
那个网址说它适用于 32 位和 64 位窗口,祝你好运!
【讨论】:
BoundsChecker 9.01 现在终于支持 VC2008 和 x64 位了。
【讨论】:
insure++ 仅在您检测代码时才有效。我曾经试过。编译大约 1000 行代码大约需要 5 分钟。由于我需要编译的项目很大,所以我很快确定 Insure++ 行不通。
更不用说他们的报告,或者 Insure++ 的输出非常陈旧。运行时性能损失也很严重。
关于 numega/compuware/other_new_company 的 boundschecker 的注意事项:不要购买。它只是配置文件 32 位应用程序。它不执行 64 位应用程序。不过,它可以安装在 64 位操作系统上。几年前我在我们的应用程序上停止使用它。不过,我确实在 CppUnit 测试中使用它……有时。
总的来说,我完全厌恶所有的本地内存泄漏工具。它们都不起作用,或者只是在关闭时锁定您的应用程序。
【讨论】:
仅供参考:BoundsChecker 10.0 可在 Windows XP 至 Windows 7 上运行,包括 32 位和 64 位版本。它支持 WOW64 应用程序,也支持 Visual Studio 2010。事实上,我们在微软发布后 30 天内就发布了 VS2010 支持。
我们正在赶上我们的积压工作。我们很晚才获得 VS2005 和 VS2008 支持(BC 9.0,2008 年秋季),但发生这种情况的原因有很多。奇迹是我们把它弄出来了。
BoundsChecker 10.5,当它出来时,应该有更多的好东西。敬请期待。
披露:我为 MicroFocus 工作。
【讨论】:
英特尔(R) Parallel Inspector (http://software.intel.com/en-us/intel-parallel-inspector/) 是 Microsoft* Visual Studio 的线程和内存检查插件工具;它在 Windows 上支持 32 位和 64 位 C/C++。这是一个商业应用程序,提供 30 天免费评估。
披露:我为英特尔工作。
我使用了边界检查和其他动态分析工具,虽然架构不同,但您要检查的是代码 - 理论上,您可以在任何后端运行边界检查,结果将是相同的 - 代码要么超出范围,要么不超出范围。
唯一的麻烦是处理超过 4GB 的内存空间,处理无法交叉编译为 32 位架构的代码片段(您没有源代码的 64 位目标文件等),以及一般64 位迁移问题(平台特定代码,例如检查 0xFFFFFFFF 而不是 -1)
您在对程序进行边界检查时遇到了哪些其他问题?无法编译 32 位版本?
当然,这不是您理想的解决方案,并且应该始终检查它们将要运行的代码,但在这种情况下,您可能别无选择,除非您想进行自己的边界检查(这是一个很好的选择)在任何情况下的想法......)。
-亚当
【讨论】:
据我了解,BC 9.0 将支持 WOW64
【讨论】:
用于 x64 和 x86 的应用程序验证程序检测堆损坏 http://www.microsoft.com/download/en/details.aspx?id=20028
【讨论】:
来自IBM PurifyPlus support for 64-bit versions of Microsoft Windows:
技术说明(常见问题解答)
问题
64 位版本的 Microsoft Windows 是否支持 IBM Rational PurifyPlus?
原因
64 位版本的 Microsoft Windows 越来越流行。
回答
从版本 7.0.1 iFix 003 开始,PurifyPlus 支持在 Windows 上测试 64 位应用程序。
有关 iFix 003 的更多信息,请参阅以下技术说明IBM Rational PurifyPlus for Windows v7.0.1.0-003
您安装此版本的 Purify 并在开始菜单中获得“Purify(用于 64 位应用程序)”条目。
【讨论】: