Purify使用体验 推荐
2006-10-21 22:29
246 查看
Purify是主要针对开发阶段的白盒测试,是综合性检测运行时错误的工具,并可以和其他复合应用程序(包括多线程和多进程程序)一起工作。Purify检查每一个内存操作,定位错误发生的地点并提供尽可能详细的信息帮助程序员分析错误发生的原因。
它可以发现的主要错误有:(摘自purify在线帮助html/getstarted_pplus/2-purify.html)
[align=left]· Reading or writing beyond the bounds of an array[/align]
[align=left] 数组读写越界[/align]
[align=left]· Using uninitialized memory [/align]
[align=left] 使用未初始化的内存[/align]
[align=left]· Reading or writing freed memory [/align]
[align=left] 读写未分配的内存[/align]
[align=left]· Reading or writing beyond the stack pointer [/align]
[align=left] 栈指针读写越界[/align]
[align=left]· Reading or writing through null pointers [/align]
[align=left] 读写空指针[/align]
[align=left]· Leaking memory and file descriptors[/align]
内存和文件描述符泄漏
Purify还检查一些其他错误,如调用函数参数错误等。
由于purify对内存的分析和记录是在程序运行完成以后才显示,如果需要在程序运行时观测就很不方便,所以Purify也提供外接API函数帮助在运行时显示内存状况以调试程序。它提供的接口说明请参见我的另一篇关于Purify的文档purify的API和提示信息代号。
Purify的使用及注意事项:
1. 对于编译执行程序,如gcc –g testpurify.c –o tpurify命令,如果需要对testpurify使用purify进行调试,那么只要在命令前加入purify即可。如:purify gcc –g testpurify.c –o tpurify。这样,当运行testpurify程序时,即会自动弹出purify观察器的界面如图1(命令行模式下只是列出purify对程序运行的统计信息):
![](http://blog.51cto.com/attachment/200812/200812021228189560421.gif)
图1
purify不能用于动态链接库的编译命令。如下用法是错误的:
purify –shared –fpic libtest.c –o libtest.so
注意:如果在安装purify时是指定的purify license server模式进行安装(在安装中输入的是证书服务器的地址,5D5D27000@licenses.com[/email]%5B/email%5D%5B/email%5D]如[email]27000@licenses.com[/email]),那么在加入purify命令进行编译程序时,网络必须能连接到指定的证书服务器,否则无法使用purify。
2. 如果程序中调用了共享库,那么,如果修改了共享库后,需要使用purify命令对调用了共享库的程序进行重新编译,才能体现修改。
3. purify能够对发现的错误直接在源文件中进行定位,如图2中在main函数旁边显示的[hello_world.c:25]:
![](http://blog.51cto.com/attachment/200812/200812021228189605734.gif)
图2
可以在purify中直接对定位的错误进行修改,点击
![](http://blog.51cto.com/attachment/200812/200812021228189628359.gif)
图标或者main下边的铅笔符号即可,弹出如图3的编辑框: 注意:如果错误发生的行号没有在观察器中显示,请检查你在编译时是否指定了-g参数。
![](http://blog.51cto.com/attachment/200812/200812021228189661578.gif)
图3
4. 注意到图2中有个ABR的字母缩写,它表示数组读错误。Purify有很多描述错误的字母缩写,请参加文档<<purify的API和提示信息代号.doc>>。
5. 现在介绍下purify的工具栏:
![](http://blog.51cto.com/attachment/200812/200812021228189685500.gif)
(1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13)
(1)(2)按钮是用于在purify观察器中导航,将最近有
![](http://blog.51cto.com/attachment/200812/200812021228189714437.gif)
或
![](http://blog.51cto.com/attachment/200812/200812021228189736031.gif)
标志的行高亮显示。
按钮(3)用于将有
![](http://blog.51cto.com/attachment/200812/200812021228189714437.gif)
标志的项展开,按钮(4)用于将有
![](http://blog.51cto.com/attachment/200812/200812021228189736031.gif)
标志的项收缩。
按钮(5)是用于打开编辑器。
按钮(6)(7)(8)是使用cleartool工具(没有安装)。
按钮(9)用于设置哪些错误信息不进行展开,以节省视图,关注更重要的错误信息。
按钮(10)是调用帮助。
按钮(11)是下一个内存泄漏提示标记。
按钮(12)是调用PureCovery。
按钮(13)是调用ClearQuest工具。
在项目开发测试中适用purify的领域有:
1. 使用purify提供的API函数,在程序运行的必要环节在观察器中显示需要获得的内存状况或打印消息。
2. 对于运行环境要求简单的程序,如可以在自己虚拟机上运行的单机程序,可以使用purify进行白盒测试,查找内存泄漏等运行时错误。
而对硬件有要求的程序,则不大可能使用purify。比如对嵌入式平台的程序,我们无法使用purify。
它可以发现的主要错误有:(摘自purify在线帮助html/getstarted_pplus/2-purify.html)
[align=left]· Reading or writing beyond the bounds of an array[/align]
[align=left] 数组读写越界[/align]
[align=left]· Using uninitialized memory [/align]
[align=left] 使用未初始化的内存[/align]
[align=left]· Reading or writing freed memory [/align]
[align=left] 读写未分配的内存[/align]
[align=left]· Reading or writing beyond the stack pointer [/align]
[align=left] 栈指针读写越界[/align]
[align=left]· Reading or writing through null pointers [/align]
[align=left] 读写空指针[/align]
[align=left]· Leaking memory and file descriptors[/align]
内存和文件描述符泄漏
Purify还检查一些其他错误,如调用函数参数错误等。
由于purify对内存的分析和记录是在程序运行完成以后才显示,如果需要在程序运行时观测就很不方便,所以Purify也提供外接API函数帮助在运行时显示内存状况以调试程序。它提供的接口说明请参见我的另一篇关于Purify的文档purify的API和提示信息代号。
Purify的使用及注意事项:
1. 对于编译执行程序,如gcc –g testpurify.c –o tpurify命令,如果需要对testpurify使用purify进行调试,那么只要在命令前加入purify即可。如:purify gcc –g testpurify.c –o tpurify。这样,当运行testpurify程序时,即会自动弹出purify观察器的界面如图1(命令行模式下只是列出purify对程序运行的统计信息):
![](http://blog.51cto.com/attachment/200812/200812021228189560421.gif)
图1
purify不能用于动态链接库的编译命令。如下用法是错误的:
purify –shared –fpic libtest.c –o libtest.so
注意:如果在安装purify时是指定的purify license server模式进行安装(在安装中输入的是证书服务器的地址,5D5D27000@licenses.com[/email]%5B/email%5D%5B/email%5D]如[email]27000@licenses.com[/email]),那么在加入purify命令进行编译程序时,网络必须能连接到指定的证书服务器,否则无法使用purify。
2. 如果程序中调用了共享库,那么,如果修改了共享库后,需要使用purify命令对调用了共享库的程序进行重新编译,才能体现修改。
3. purify能够对发现的错误直接在源文件中进行定位,如图2中在main函数旁边显示的[hello_world.c:25]:
![](http://blog.51cto.com/attachment/200812/200812021228189605734.gif)
图2
可以在purify中直接对定位的错误进行修改,点击
![](http://blog.51cto.com/attachment/200812/200812021228189628359.gif)
图标或者main下边的铅笔符号即可,弹出如图3的编辑框: 注意:如果错误发生的行号没有在观察器中显示,请检查你在编译时是否指定了-g参数。
![](http://blog.51cto.com/attachment/200812/200812021228189661578.gif)
图3
4. 注意到图2中有个ABR的字母缩写,它表示数组读错误。Purify有很多描述错误的字母缩写,请参加文档<<purify的API和提示信息代号.doc>>。
5. 现在介绍下purify的工具栏:
![](http://blog.51cto.com/attachment/200812/200812021228189685500.gif)
(1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13)
(1)(2)按钮是用于在purify观察器中导航,将最近有
![](http://blog.51cto.com/attachment/200812/200812021228189714437.gif)
或
![](http://blog.51cto.com/attachment/200812/200812021228189736031.gif)
标志的行高亮显示。
按钮(3)用于将有
![](http://blog.51cto.com/attachment/200812/200812021228189714437.gif)
标志的项展开,按钮(4)用于将有
![](http://blog.51cto.com/attachment/200812/200812021228189736031.gif)
标志的项收缩。
按钮(5)是用于打开编辑器。
按钮(6)(7)(8)是使用cleartool工具(没有安装)。
按钮(9)用于设置哪些错误信息不进行展开,以节省视图,关注更重要的错误信息。
按钮(10)是调用帮助。
按钮(11)是下一个内存泄漏提示标记。
按钮(12)是调用PureCovery。
按钮(13)是调用ClearQuest工具。
在项目开发测试中适用purify的领域有:
1. 使用purify提供的API函数,在程序运行的必要环节在观察器中显示需要获得的内存状况或打印消息。
2. 对于运行环境要求简单的程序,如可以在自己虚拟机上运行的单机程序,可以使用purify进行白盒测试,查找内存泄漏等运行时错误。
而对硬件有要求的程序,则不大可能使用purify。比如对嵌入式平台的程序,我们无法使用purify。
相关文章推荐
- 新手建站十大免费空间推荐-稳定,可用的免费空间及其使用体验
- [推荐]超酷的Visual Studio使用体验,来自《Microsoft Visual Studio Tips》
- 创建Windows To Go工作区及使用体验 推荐
- 使用Window8 Hyper-V体验 推荐
- 再谈iPad使用体验(缺点篇) 推荐
- 主线程中同步的 XMLHttpRequest 已不推荐使用,因其对终端用户的用户体验存在负面影响。
- 飞鱼星流控王VF12路由器使用体验 推荐
- Purify使用体验
- 新手建站十大免费空间推荐、及其使用体验
- Telerik ASP.net MVC3之初体验,PanelBar的使用 推荐
- 使用MSAgent代替传统的MessageBox提示来增用客户端用户体验
- 以细分使用场景为突破点 探究墨迹天气的体验创新
- 使用 \ 可以分割长语句,不推荐使用 使用 ; 可以在同一行写多个语句
- Android 流行的网络图片加载库 之 使用 Glide 加载图片 (Google推荐的图片加载库Glide)
- 使用Spring Cloud Feign作为HTTP客户端调用远程HTTP服务的方法(推荐)
- 使用 JavaScript 实现简单候选项推荐功能(模糊搜索)【收藏】【转】
- Android RecyclerView 使用完全解析 体验艺术般的控件
- 【2016年终总结下】坚持52次版本更新,只为不断提高开发者的使用体验
- 推荐!手把手教你使用Git
- 使用Unix/Linux桌面系统推荐安装的程序