我目前正处于一个长期存在错误的项目中,现在我怀疑,除其他外,代码中存在指针错误。
该程序使用COM以本机C ++编写,并使用进程外COM服务器。
有人可以给我一些提示,告诉我如何找到这些错误吗?
是否有特定要注意的事项,方法等等......
答案 0 :(得分:1)
您可以尝试使用AQTime,DevPartner或IBM Rational Purify等内存分析器。我认为还有很多其他的。
答案 1 :(得分:1)
我在这里有几点建议:
希望这会有所帮助。您也可以尝试使用远程调试等所有内容,或者使用Vtune或其他东西来检测代码,但是让一开始就让事情变得简单。
Arpan
答案 2 :(得分:1)
BoundsChecker有一个名为Wait for Process的运行时模式。这使您可以让BC等待DLLHOST进程启动,并在进程启动时附加BC核心。对于指针错误,您将使用BC的最终检查模式。这意味着您添加编译时本机检测,如果您检测整个应用程序,这可能会非常慢,但如果只检测COM服务器及其依赖项,则可能非常有效。请关注MF Developer下的http://www.microfocus.com,了解有关2月初DPS 10.5发布的新闻。免责声明,我在DevPartner团队工作,所以请考虑这是我无耻的插件。我们对10.5版本及其64位支持的意图是确保我们能够处理纯C ++ x64应用程序,其次是混合.NET应用程序,以及BC下的纯.NET应用程序。套件中的其他分析器采用了另一种方式,最重要的是.NET。希望您找到10.5适合您的开发环境和故障排除需求。
答案 3 :(得分:0)
这是一个非常广泛的主题。
您可以做的最好的事情是使用仪器和跟踪平台,它允许您查看所有分配,内存泄漏和内存损坏,但这可能非常难以设置和耗时,具体取决于项目的大小以及构建系统的复杂性。
您还可以插入自定义分配和解除分配代码(请参阅microsoft的debug_new(我认为)作为示例。
对于特定于COM的跟踪,我不确定是否有任何现有的解决方案。如果您使用ATL,您可以使用自己的插件/替换/扩展智能指针类(如CComPtr)。