制御フロー トークン

制御フロー トークンを使用すると、デバッガー コマンド プログラム内で条件付き実行や実行ループを作成できます。

制御フロー トークンは、C や C++ での同等の機能と同様に動作しますが、一般的な例外は以下のとおりです。

  • 該当するコマンドが 1 つしかない場合でも、条件付きで実行されるコマンドまたは繰り返し実行されるコマンドの個々のブロックを中かっこで囲む必要があります。 たとえば、次のコマンドで中かっこを省略することはできません。

    0:000> .if (ebx>0) { r ebx }
    
  • 各条件は式である必要があります。 コマンドは許可されません。 たとえば、次の例では構文エラーが発生します。

    0:000> .while (r ebx) { .... }
    
  • 右中かっこの前の最後のコマンドの後にセミコロンを付ける必要はありません。

デバッガー コマンド プログラム内では、以下の制御フロー トークンがサポートされています。 各トークンの構文の詳細については、個々のリファレンス トピックを参照してください。

  • .if トークンは、C での if キーワードと同様に動作します。

  • .else トークンは、C での else キーワードと同様に動作します。

  • .elsif トークンは、C での else if キーワードの組み合わせと同様に動作します。

  • .foreach トークンは、デバッガー コマンドの出力 (文字列またはテキスト ファイル) を解析します。 このトークンは、検出した各項目を取得して、指定されたデバッガー コマンドの一覧への入力として使用します。

  • .for トークンは、C での for キーワードと同様に動作しますが、複数のインクリメント コマンドをカンマではなくセミコロンで区切る必要がある点が異なります。

  • .while トークンは、C での while キーワードと同様に動作します。

  • .do トークンは、C での do キーワードと同様に動作しますが、条件の前に "while" という語を使用できない点が異なります。

  • .break トークンは、C での break キーワードと同様に動作します。このトークンは、任意の .for, .while ループまたは .do ループ内で使用できます。

  • .continue トークンは、C での continue キーワードと同様に動作します。このトークンは、任意の .for, .while ループまたは .do ループ内で使用できます。

  • .catch トークンは、エラーが発生した場合にプログラムが終了するのを防ぎます。 .catch トークンの後には、1 つ以上のコマンドを囲む中かっこが続きます。 これらのコマンドのいずれかでエラーが生成されると、エラー メッセージが表示され、中かっこ内の残りのコマンドすべてが無視され、右中かっこ以降の最初のコマンドで実行が再開されます。

  • .leave トークンは、.catch ブロックから抜けるために使用されます。

  • .printf トークンは、C での printf ステートメントと同様に動作します。

  • .block トークンは、何のアクションも実行しません。 中かっこのペアを使用するだけではブロックを作成できないため、このトークンを使用してブロックを導入する必要があります。 制御フロー トークンは、左中かっこの前に追加する必要があります。

!for_each_module!for_each_frame、および !for_each_local 拡張機能も、デバッガー コマンド プログラムでは有用です。