商讯信箱
用户名: @
密  码:   注册|忘记密码
登录
个人用户经销商
信箱 E杂志
您的位置:首页 > 技术频道 > 正文

C/C++内存问题检查利器—Purify (二)

作者:ITPUB论坛  2008-05-20

【IT168 技术文章】

    三、示例 

    假设我们现在有这样一段程序:hello.c

 

    很明显,这段程序中有内存上的错误,假设我们疏忽了这些错误,当我们使用Purify进行测试时,我们会发现这段程序中的内存错误在Purify下很容易就被找出来了。首先,我们要做的是使用Purify编译这段程序:


> purify gcc -g -o hello hello.c

Purify 2003.06.00 Solaris 2 (32-bit) Copyright (C) 1992-2002 Rational Software Corp. 
All rights reserved. 

Instrumenting: cckc6pUD.o  Linking

 
    记得加上“-g”的选项,不然,purify不能显示源程序。好了,现在在当前目录下产生了可执行文件——hello,在运行hello之前,我们还得注意,执行被Purify编译过的程序,有可能会出现X-Windows,所以请注意设置DISPLAY环境,如果你是在Windows的Telnet客户端下执行,那么你可以在Windows下装一个叫做Exceed的工具软件,它可以方便地把X-Window显示在你的Windows桌面上)

    好了,我们现在执行hello程序,就可以看到下面的一个窗口:


 
    我们可以看到Purify的报告中有两个内存错误,一个是ABR(Array Bounds Read)——数组越界读,一个是12个字节的Memory Leaked,展开小三角符号,我们可以看到更为详细报告:

1 2
【内容导航】
第1页: 示例 第2页: 内存问题一览
©版权所有。未经许可,不得转载。
[责任编辑:robert]