条件编译

SystemTap 脚本解析时有预处理阶段,此阶段支持类似三元运算符的条件解析。通用的形式如下

 %( CONDITION %? TRUE-TOKENS %)
 %( CONDITION %? TRUE-TOKENS %: FALSE-TOKENS %)

通用的语法形式如下

 %( <condition> %? <code> [ %: <code> ] %)

举个例子说明下

%( $# > 1 %?
probe timer.sec($2) {
    %:
probe timer.sec(5) {
    %)
        exit();
}

条件表达式是 $# > 1, 当命令行参数大于1时,执行 probe timer.sec($2) 把第二个参数当成 timer 的秒数,否则使用默认值5。

@defined 可以用来测试 targe 变量是否可用。

 probe foo { if (@defined($bar)) log ("$bar is available here") }

results matching ""

    No results matching ""