2、 MILY: 宋體">我們可以使用Purify的過濾語法來要求Purify的過濾信息。并把其存于.purify文件中,這樣當我們的Purify起動后載入這個文件,就可以達到過濾信息的目的了。通過文本語法來設置過濾信息比圖形界有更為強大的地方。下面還是來看看suppress的語法:
語法:
suppress <message-type> <function-call-chain>
unsuppress <message-type> <function-call-chain>
其中,suppress和unsuppress中關鍵字,分別表示過濾或不過濾。<message-type>指明要操作的消息,可以使用“*”做通配符,<function-call-chain>表示函數的調用鏈,調用的函數鏈用分號分隔,其同樣可以使用“*”做通配符,還可以使用“…”來表示無論中間是什么。
還是來看幾個示例吧:
1) suppress AB*
表示過濾ABR和ABW錯誤。
2) suppress *W
表示過濾ABW、FMW、IPW、NPW、SBW、WPW和ZPW錯誤。
3) suppress ABR “libc*”
表示在所有以libc打頭的LIB文件中過濾ABR信息。
4) suppress ABR sortFunction; sort*; qsort; “libc*”
其表示,過濾ABR錯誤。過濾范圍是在sortFunction中,并且是在以libc開頭的函數庫文件中,其調用鏈是qsort -> sort* -> sortFunction。換言之,只要有“libc*”文件中的函數調用了qsort,并且qsort調用了開頭為sort*的函數,并且這些函數調用了sortFunction,那么,在這一個函數鏈中,不顯示ABR錯誤信息。
5) suppress UMR tzsetWall;…; main
其表示,在tzsetWall函數中過濾URM信息,只要tzsetWall函數是被main函數間接調用的,無論有多遠,都不顯示UMR信息。
6) suppress FNH Test: :Test
這是C++中使用的語法,表示在類Test所有的構造函數中過濾FNH信息。如果要指明特定的函數,請加上其參數類型,如:suppress FNH Test::Test(const char*)。
注意,“…”語法表示調用鏈無論有多遠。當然,如果你設置了參數“-chain-length=6”,那么,“…”只能到6層函數調用,7層的就不管了。
在啟動Purify時,我們可以這樣來讀取.purify文件:
% purify -suppression-file-names=".purify,.purify.sunos4,\
$HOME/purify_suppressions"
Purify會在下面的目錄中尋找這個文件:
<purifyhome>/.purify
<purifyhome>/.purify.sunos4
$HOME/.purify
$HOME/.purify.sunos4
<progdir>/.purify
<progdir>/.purify.sunos4
$HOME/purify_suppressions
文章來源于領測軟件測試網 http://www.anti-gravitydesign.com/