dbx では、ほとんどのイベント管理コマンドでオプションのイベントフィルタ修飾子もサポートします。もっとも単純なフィルタは、プログラムがブレークポイントかトレースハンドラに到達したあと、またはデータ変更ブレークポイントが発生したあとに、dbx に対してある特定の条件をテストするように指示します。
このフィルタの条件が真 (非 0) と評価された場合、イベントコマンドが適用され、プログラムはブレークポイントで停止します。条件が偽 (0) と評価された場合、dbx は、イベントが発生しなかったかのようにプログラムの実行を継続します。
フィルタを含むブレークポイントを設定するには、オプションの -if condition 修飾文を stop コマンドまたは trace コマンドの末尾に追加します。
condition には、任意の有効な式を指定できます。コマンドの入力時に有効だった言語で書かれた、ブール値または整数値を返す関数呼び出しも有効な式に含まれます。
in や at など位置に基づくブレークポイントでは、条件の構文解析を行うスコープはブレークポイント位置のスコープになります。それ以外の場合、イベントではなくエントリ発生時のスコープになります。スコープを正確に指定するために逆引用符演算子 (逆引用符演算子を参照) を使用する必要があることがあります。
次の 2 つのフィルタは異なります。
stop in foo -if a>5 stop cond a>5
前者は foo にブレークポイントが設定され、条件を検査します。後者は自動的に条件を検査します。