代码之家  ›  专栏  ›  技术社区  ›  goldenmean

RationalPurify没有显示内存泄漏、运行时错误?

  •  0
  • goldenmean  · 技术社区  · 16 年前

    这看起来可能不像是一个编程问题,但本质上是处理代码的。

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

    #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;
       }
    
    }
    

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

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

    3.)将链接器选项-“基本运行时检查”设置为默认值。

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

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

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

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

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

    谢谢

    1 回复  |  直到 16 年前
        1
  •  1
  •   goldenmean    16 年前

    在网上疯狂地尝试了很多东西之后,我找到了解决这个问题的方法

    1) 添加新的环境变量:

    值=1

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