这看起来可能不像是一个编程问题,但本质上是处理代码的。
我有一段测试代码,它有一些明显的错误,比如数组索引越界、内存泄漏:-
#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代码进行运行时分析。
谢谢