首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rational Purify没有显示内存泄漏,运行时错误吗?

Rational Purify没有显示内存泄漏,运行时错误吗?
EN

Stack Overflow用户
提问于 2010-02-20 03:16:19
回答 1查看 1.8K关注 0票数 0

这可能看起来不像是编程问题,但本质上是与代码相关的。

我有以下一段测试代码,它有明显的错误,如数组索引越界,内存泄漏:

代码语言:javascript
复制
#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-Visual Studio2008构建的。

我正在尝试使用Rational Purify (7.0版)来识别运行时错误,我的代码中的内存泄漏。在阅读了一些关于如何构建代码以便在Purify中使用的指针之后,我在MSVS-2008项目设置中做了以下事情:

1.)禁用增量链路2。)调试信息编译器标志为/Zi

3.)设置链接器选项- "Basic run-time checking to value Default。

4.)添加了额外的链接器选项/fixed:no。

5.)生成配置已调试,未启用优化。

然后我构建并获取exe。我使用这个exe在Purify中运行,这样它就可以使用相同的仪器。但是在运行/检测这个exe之后,purify中的output窗口并没有显示关于内存泄漏的错误,..etc出现在上面的代码中。

purify output窗口显示了不同的二进制文件(我的exe文件和一些其他的系统dll)的输出,它们被加载、执行。但在显示有关我的exe的数据的输出中,没有错误消息。

我的感觉是,在MS-VS2008中构建exe时,我给出了编译/链接器选项,这是一个错误,或者生成的可执行文件格式不兼容/不能被Purify理解?

1.)这里可能出了什么问题?在构建exe时,我还需要哪些其他选项?

2.)我使用Purify的过程是否正确,或者我是否遗漏了什么?在运行时分析之后,我如何让Purify显示我程序中的所有错误?

3.)是否有其他工具(免费/商业许可)可以检测内存泄漏、数组越界错误、未初始化指针的使用、变量、内存损坏等。通过对C代码进行运行时分析。

很抱歉我的邮件太长了,但我必须说清楚。

谢谢。

-AD

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-02-24 01:49:16

在疯狂地尝试了很多东西之后,在网上看了看,我找到了解决方案。为此

1)添加一个新的环境变量如下:

名称= IBM_RATIONAL_PURIFY_ENABLE_SELECTIVE

Vale =1

2)除了我在操作中提到的MS Visual Studio项目设置外,还需要以下设置-

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

当您在purify中运行可执行文件时,您必须点击Configure Selective,选择您的exe。

然后,当你运行时,它应该收集所需的错误相关信息。

-AD

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2298924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档