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
文章来源于领测软件测试网 https://www.ltesting.net/