• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    IBM Rational Purify 使用及分析實例

    發布: 2009-4-20 17:14 | 作者: 蔡林 | 來源: 測試時代采編 | 查看: 730次 | 進入軟件測試論壇討論

    領測軟件測試網



    2.Purify的原理及使用

    IBM Rational PurifyPlus是一組程序運行時的分析軟件。她包括了程序性能瓶頸分析軟件Quantify, 程序覆蓋面分析軟件PureCoverage,和本文的主角:程序運行錯誤分析軟件Purify。Purify可以發現程序運行時的內存訪問,內存泄漏和其他難以發現的問題。

    同時她也是市場上唯一支持多種平臺的類似工具,并且可以和很多主流開發工具集成。Purify可以檢查應用的每一個模塊,甚至可以查出復雜的多線程或進程應用中的錯誤。另外她不僅可以檢查C/C++,還可以對Java或.NET中的內存泄漏問題給出報告。

    2.1 Purify的原理

    程序運行時的分析可以采用多種方法。Purify使用了具有專利的目標代碼插入技術(OCI:Object Code Insertion)。她在程序的目標代碼中插入了特殊的指令用來檢查內存的狀態和使用情況。這樣做的好處是不需要修改源代碼,只需要重新編譯就可以對程序進行分析。

    對于所有程序中使用的動態內存,Purify將它們按照狀態進行歸類。這可以由下圖來說明(來自[DEV205]):


     

    參見本文中以上給出的代碼,在程序第5行執行后,str2處于黃色狀態。當在第7行進行讀的時候,系統就會報告一個訪問未初始化內存錯誤(Uninitialized Memory Read)。因為只有在綠色狀態下,內存才可以被合法訪問。

    為了檢查數據越界錯誤(ABR,ABW),Purify還在每個分配的內存前后插入了紅色區域。這樣一來,超過邊界的訪問指令必定落在非法區域,從而觸發ABR或者ABW錯誤報告。這里需要指出一點。訪問未初始化內存錯誤UMR在某些情況下其實是合法的操作,例如內存拷貝。所以在分析報告時可以把UMR放到最后,或者干脆從結果中濾除。

    2.2 Purify的使用

    這里簡單介紹一下Purify在Windows和UNIX環境下的使用。

    在Windows中,只要運行Purify,填入需要分析的程序及參數就可。Purify會自動插入檢測代碼并顯示報告。報告的格式如下(來自[DEV205]):


     

    藍色的圖標代表一些運行的信息,比如開始和結束等。黃色是Purify給出的警告。通常UMR會作為警告列出。紅色則代表嚴重的錯誤。每一種相同的錯誤,尤其是在循環中的,會被集中在一起顯示,并且標明發生的次數。由每個錯誤的詳細信息,用戶可以知道相應的內存地址和源代碼的位置,并直接修改。另外用戶還可以設置不同的濾過器,用來隱藏暫時不關心的消息。

    在UNIX系統中,使用Purify需要重新編譯程序。通常的做法是修改Makefile中的編譯器變量。下面是用來編譯本文中程序的Makefile:


    CC=purify gccall: pplusdemopplusdemo: pplusdemo.o $(CC) -o pplusdemo pplusdemo.o -lstdc++pplusdemo.o: pplusdemo.cpp $(CC) -g -c -w pplusdemo.cppclean: -rm pplusdemo pplusdemo.o

    首先運行Purify安裝目錄下的purifyplus_setup.sh來設置環境變量,然后運行make重新編譯程序。需要指出的是,程序必須編譯成調試版本。在gcc中,也就是必須使用"-g"選項。在重新編譯的程序運行結束后,Purify會打印出一個分析報告。它的格式和含義與Windows平臺大同小異。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    32/3<123>

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>