Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;查找指针错误_C++_Windows_Debugging_Com_Pointers - Fatal编程技术网

C++ C++;查找指针错误

C++ C++;查找指针错误,c++,windows,debugging,com,pointers,C++,Windows,Debugging,Com,Pointers,我目前在一个项目上,这个项目已经有很长一段时间有问题了,现在我怀疑代码中有指针错误 程序是用COM用C++编写的,使用进程外的COM服务器。p> 有谁能给我一些提示,告诉我如何找到这些错误 有没有具体的事情要记在心上,有没有具体的方法等等。这是一个非常广泛的话题 您可以做的最好的事情是使用一个检测和跟踪平台,该平台允许您查看所有分配、内存泄漏和内存损坏,但根据项目的大小和构建系统的复杂性,这可能非常难以设置和耗时 您还可以插入自定义分配和解除分配代码(以microsoft的debug_new(我

我目前在一个项目上,这个项目已经有很长一段时间有问题了,现在我怀疑代码中有指针错误

程序是用COM用C++编写的,使用进程外的COM服务器。p> 有谁能给我一些提示,告诉我如何找到这些错误


有没有具体的事情要记在心上,有没有具体的方法等等。

这是一个非常广泛的话题

您可以做的最好的事情是使用一个检测和跟踪平台,该平台允许您查看所有分配、内存泄漏和内存损坏,但根据项目的大小和构建系统的复杂性,这可能非常难以设置和耗时

您还可以插入自定义分配和解除分配代码(以microsoft的debug_new(我认为)为例)


对于特定于COM的跟踪,我不确定是否有现成的解决方案。如果使用ATL,您可以插入/替换/扩展智能指针类(如CComPtr)用你自己的。

你可以尝试使用像AQTime、DevPartner或IBM Rational Purify这样的内存分析器。我认为还有很多其他的。

我有几个建议:

  • 你是如何发现指针错误的?为什么不把它放在调试器中,然后看看程序在哪里崩溃?这就是一个开始。监视有问题的变量
  • 是什么让你认为代码的COM部分出错了?相反,我认为这里有两个进程在运行(可能在同一台机器上,也可能不在同一台机器上)您应该并行运行这些程序,然后看看它们是如何相互响应的——我敢肯定,在应用程序代码中处理数据会出错。COM是一种相当成熟的技术
  • 也许您正在进行不正确的API调用,或者像微软的所有事情一样,有1000个参数,可能您需要调整这些参数
  • 希望这能有所帮助。您也可以尝试远程调试之类的方法,或者使用Vtune或其他工具插入代码,但让我们从简单开始


    Arpan

    BoundsChecker有一个名为Wait for Process的运行时模式。这允许您让BC等待DLLHOST进程启动,并在进程启动时附加BC core。对于指针错误,您将使用BC的最终检查模式。这意味着您添加编译时本机插装,如果插装,可能会非常慢R整个应用程序,但如果你只对你的COM服务器和它的依赖性进行测试,那将是非常有效的。请在MF开发者下面查看关于二月初DPS 10.5发布的消息。免责声明,我在DevPartner团队工作,所以把这个看作是我的无耻插件。我们的10.5版本和64位支持的意图是确保我们Cou.LD处理纯C++ X64应用程序,混合.NET应用程序第二,纯.NET应用程序最后在BC下。套件中的其他配置程序以纯.NET最前行的方式。希望您能找到10.5个适合您的DEV环境和故障排除需求。< /P>什么类型的“指针错误”?