这可能不会出现像一个编程问题,但与代码固有的交易。

我有一个下面的一段测试码,它具有明显的错误状阵列索引超出范围,内存泄漏: -

#include "stdio.h"
#include "stdlib.h"
main()
{
   int i;
   char *ptr;
   ptr = (char*)malloc(5);
   for(i=0;i<10;i++)
   {
      ptr[i]=(char)i;
   }

}

此代码建立在MS-2008的Visual Studio中。

我试图使用Rational Purify的(7.0版本),以确定我的代码运行时错误,内存泄漏。走向阅读有关如何在使用净化构建代码,下面我有东西在MSVS-2008项目的设置做了一些三分球后: -

1)禁止增量链路2)调试信息编译器标记为/紫

3)设置链接器选项 - 。“Basic运行时检查,以默认值

4)增加了一个额外的连接器选项/固定:。没有

5。)构建的配置是调试,没有优化启用。

然后,我建立和得到的exe。我用这个exe文件在运行净化,使其仪器相同。但在净化输出窗口运行/插装此exe,示出了没有关于内存泄漏错误,..等中存在的上述代码之后。

在净化输出窗口显示输出不同的二进制文件的(我的exe文件和其他一些系统DLL)它仪表加载,执行。但在输出,其中大约是我的exe文件显示的数据,没有错误消息。

我的感觉是我在给编译/链接选项,同时建设MS-VS 2008.or生成的可执行文件格式的exe不兼容/理解通过净化犯了一个错误?

1)什么可能是错在这里?更重要的是选择我可以同时建立的exe需要?

2)是我使用净化正确的,还是我失去了一些东西的过程?我怎样才能得到净化,以做运行时分析后显示在我的计划中的所有错误?

3)是否有任何其他工具(游离/商业授权),它可以detecl内存泄漏,结合的错误的阵列时,使用未初始化的指针,变量,内存损坏等。通过这样做的C代码的运行时间分析的。

抱歉稍长的邮件,但必须是清楚的。

感谢。

-AD

有帮助吗?

解决方案

疯狂地尝试很多事情后,阅读互联网上,我发现了SOLN。此

1)添加新的环境变量为:

名称= IBM_RATIONAL_PURIFY_ENABLE_SELECTIVE

谷= 1

2)除了MS我在OP提到的,低于所需设定Visual Studio项目设置 -

C / C ++ - >代码生成=运行时库 - >多线程调试/ MTD

和当u运行在净化可执行文件,你必须点击配置选择,选择你的EXE。

然后当u运行时,它应colelct所需错误相关的信息。

-AD

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top