Purify使用体验

简介:





本文转自 xkdcc 51CTO博客,原文链接:http://blog.51cto.com/brantc/116674,如需转载请自行联系原作者 Purify 是主要针对开发阶段的白盒测试,是综合性检测运行时错误的工具,并可以和其他复合应用程序(包括多线程和多进程程序)一起工作。 Purify 检查每一个内存操作,定位错误发生的地点并提供尽可能详细的信息帮助程序员分析错误发生的原因。
 
        它可以发现的主要错误有:(摘自 purify 在线帮助 html/getstarted_pplus/2-purify.html
·    Reading  or writing beyond the bounds of an array
    数组读写越界
·   Using uninitialized memory
    使用未初始化的内存
·    Reading  or writing freed memory
    读写未分配的内存
·    Reading  or writing beyond the stack pointer
    栈指针读写越界
·    Reading  or writing through null pointers
    读写空指针
·   Leaking memory and file descriptors
    内存和文件描述符泄漏
 
        Purify 还检查一些其他错误,如调用函数参数错误等。
        由于 purify 对内存的分析和记录是在程序运行完成以后才显示,如果需要在程序运行时观测就很不方便,所以 Purify 也提供外接 API 函数帮助在运行时显示内存状况以调试程序。它提供的接口说明请参见我的另一篇关于Purify的文档 purifyAPI和提示信息代号
 
        Purify 的使用及注意事项:
        1.     对于编译执行程序,如gcc –g testpurify.c –o tpurify 命令,如果需要对 testpurify 使用 purify 进行调试,那么只要在命令前加入 purify 即可。如:purify gcc –g testpurify.c –o tpurify 。这样,当运行 testpurify 程序时,即会自动弹出 purify 观察器的界面如图 1( 命令行模式下只是列出 purify 对程序运行的统计信息 )
   

                          
1

purify
不能用于动态链接库的编译命令。如下用法是错误的:
purify –shared –fpic libtest.c –o libtest.so

注意:如果在安装 purify 时是指定的 purify license server 模式进行安装 ( 在安装中输入的是证书服务器的地址, [email]27000@licenses.com[/email]) ,那么在加入 purify 命令进行编译程序时,网络必须能连接到指定的证书服务器,否则无法使用 purify
        2.     如果程序中调用了共享库,那么,如果修改了共享库后,需要使用 purify 命令对调用了共享库的程序进行重新编译,才能体现修改。
        3.      purify 能够对发现的错误直接在源文件中进行定位,如图 2 中在 main 函数旁边显示的 [hello_world.c:25]
   

                          
2

   可以在purify中直接对定位的错误进行修改,点击图标或者main下边的铅笔符号即可,弹出如图3的编辑框: 注意:如果错误发生的行号没有在观察器中显示,请检查你在编译时是否指定了-g参数。
      
                                                          图3
 
        4.       注意到图 2 中有个 ABR 的字母缩写,它表示数组读错误。 Purify 有很多描述错误的字母缩写,请参加 文档 <<purifyAPI和提示信息代号.doc>>
        5.       现在介绍下 purify 的工具栏:

  (1)      (2)     (3)    (4)     (5)      (6)    (7)    (8)    (9)    (10)   (11)  (12)  (13) 

(1)(2)
按钮是用于在 purify 观察器中导航,将最近有 标志的行高亮显示。
按钮 (3) 用于将有 标志的项展开,按钮 (4) 用于将有 标志的项收缩。
按钮 (5) 是用于打开编辑器。
按钮 (6)(7)(8) 是使用 cleartool 工具 ( 没有安装 )
按钮 (9) 用于设置哪些错误信息不进行展开,以节省视图,关注更重要的错误信息。
按钮 (10) 是调用帮助。
按钮 (11) 是下一个内存泄漏提示标记。
按钮 (12) 是调用 PureCovery
按钮 (13) 是调用 ClearQuest 工具。
 
        在项目开发测试中适用purify的领域有:
        1.   使用 purify 提供的 API 函数,在程序运行的必要环节在观察器中显示需要获得的内存状况或打印消息。
        2.   对于运行环境要求简单的程序,如可以在自己虚拟机上运行的单机程序,可以使用 purify 进行白盒测试,查找内存泄漏等运行时错误。
而对硬件有要求的程序,则不大可能使用 purify。比如 对嵌入式平台的程序,我们无法使用 purify
目录
相关文章
|
7月前
|
JSON Java 测试技术
面向初学者的JMeter实战手册:从环境搭建到组件解析
Apache JMeter 是 Apache 组织基于 Java 开发的压力测试工具,用于对软件做压力测试。JMeter 最初被设计用于 Web 应用测试,但后来扩展到了其他测试领域,可用于测试静态和动态资源,如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库和 FTP 服务器等等。JMeter 可对服务器、网络或对象模拟巨大的负载,在不同压力类别下测试它们的强度和分析整体性能。另外,JMeter 能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证程序是否返回了期望结果。
519 0
|
8月前
|
IDE 开发工具 开发者
手把手教你安装PyCharm 2025:开发者的Python IDE配置全流程+避坑指南
本教程详细介绍了PyCharm 2025版本在Windows系统下的安装流程及配置方法,涵盖AI代码补全与智能调试工具链等新功能。内容包括系统要求、安装步骤、首次运行配置(如主题选择与插件安装)、创建首个Python项目,以及常见问题解决方法。此外,还提供了切换中文界面和延伸学习资源的指导,帮助用户快速上手并高效使用PyCharm进行开发。
4462 61
|
9月前
|
SQL 存储 数据库
《深度剖析SQL数据类型转换:隐式与显式的奥秘》
在SQL中,数据类型转换是基础且关键的操作,分为隐式和显式转换。隐式转换由系统自动完成,虽便捷但可能带来性能损耗、索引失效及数据准确性风险;显式转换通过函数(如CAST、CONVERT)手动实现,更精确可控,能提升性能、增强代码可读性和保障数据准确性。掌握两者特点与应用场景,合理选择转换方式,对编写高效稳定的SQL代码至关重要。同时,注意数据兼容性与错误处理,确保转换操作顺利进行,避免潜在问题。
230 5
|
存储 编解码 Android开发
58. 【Android教程】音频录制:MediaRecord
58. 【Android教程】音频录制:MediaRecord
369 2
|
缓存 自然语言处理 JavaScript
万字长文深度解析JDK序列化原理及Fury高度兼容的极致性能实现
Fury是一个基于JIT动态编译的高性能多语言原生序列化框架,支持Java/Python/Golang/C++/JavaScript等语言,提供全自动的对象多语言/跨语言序列化能力,以及相比于别的框架最高20~200倍的性能。
169148 12
|
存储 芯片 块存储
计算机组成原理(2)-----存储芯片与CPU的连接
计算机组成原理(2)-----存储芯片与CPU的连接
1076 1
|
安全 Shell 网络安全
Charles - 夜神模拟器证书安装App抓包
Charles - 夜神模拟器证书安装App抓包 前言 一、软件安装 1.Openssl安装 1.1下载安装 1.2配置环境变量 1.3查看openssl版本,输入命令:openssl version 2.夜神模拟器安装 1.1 下载安装 1.2工具准备,MT管理器 3.Charles安装 二、Charles 安装证书,抓包 1.Charles破解 2.安装证书并导出 3.开启代理模式 4.证书格式化 5.通过MT管理器将证书配置到模拟器中 6.模拟器WiFi填入Charles代理的IP和端口 7.抓包示例
1927 0
Charles - 夜神模拟器证书安装App抓包
|
网络协议
Telnet协议详解
Telnet协议详解
|
Ubuntu Linux Shell
飞腾FT-2000/4开发板上移植Ubuntu18.04.5且更换飞腾内核4.19.8教程(1)
飞腾FT-2000/4开发板上移植Ubuntu18.04.5且更换飞腾内核4.19.8教程(1)
2354 0
飞腾FT-2000/4开发板上移植Ubuntu18.04.5且更换飞腾内核4.19.8教程(1)