sx、sxd、sxe、sxi、sxn、sxr、sx- (例外の設定)
sx コマンドは、デバッグ中のアプリケーションで例外が発生したとき、または特定のイベントが発生したときにデバッガーが実行するアクションを制御します。
sx
sx{e|d|i|n} [-c "Cmd1"] [-c2 "Cmd2"] [-h] {Exception|Event|*}
sx- [-c "Cmd1"] [-c2 "Cmd2"] {Exception|Event|*}
sxr
パラメーター
-c "Cmd1"
例外またはイベントが発生した場合に実行されるコマンドを指定します。 このコマンドは、この例外によってデバッガーが割り込むかどうかに関係なく、この例外を処理する最初の機会が発生したときに実行されます。 Cmd1 文字列は引用符で囲む必要があります。 セミコロンで区切ると、この文字列に複数のコマンドを含めることができます。 -c と引用符で囲まれたコマンド文字列の間のスペースは省略可能です。
-c2"Cmd2"
例外またはイベントが発生し、最初の機会に処理されない場合に実行されるコマンドを指定します。 このコマンドは、この例外によってデバッガーが割り込むかどうかに関係なく、この例外を処理する 2 番目の機会が発生したときに実行されます。 Cmd2 文字列は引用符で囲む必要があります。 セミコロンで区切ると、この文字列に複数のコマンドを含めることができます。 -c2 と引用符で囲まれたコマンド文字列の間のスペースは省略可能です。
-h
中断状態ではなく、指定したイベントの処理状態を変更します。 Event が cc、hc、bpec、または ssec の場合、-h オプションを使用する必要はありません。
Exception
コマンドが現在の基数で処理する例外番号を指定します。
イベント
コマンドが実行されるイベントを指定します。 これらのイベントは短い省略形で識別されます。 イベントの一覧については、「例外とイベントの制御」を参照してください。
*
sx に明示的に名前が付けられていないすべての例外に影響します。 明示的に名前が付けられている例外の一覧については、「例外とイベントの制御」を参照してください。
環境
モード | ユーザー モード、カーネル モード |
Targets | ライブ デバッグのみ |
プラットフォーム | すべて |
追加情報
中断ステータスと処理ステータスに関する詳細、すべてのイベント コードの説明、すべてのイベントの既定ステータスのリスト、このステータスのその他の制御方法については、「例外とイベントの制御」を参照してください。
解説
sx コマンドは、現在のプロセスの例外の一覧とすべての非例外イベントの一覧を表示し、例外とイベントごとにデバッガーの既定の動作を表示します。
sxe、sxd、sxn、および sxi コマンドは、各例外とイベントのデバッガー設定を制御します。
sxr コマンドは、すべての例外およびイベント フィルターの状態を既定の設定にリセットします。 たとえば、コマンドはクリアされて中断され、続行オプションは既定の設定にリセットされます。
sx- コマンドは、指定された例外またはイベントの処理状態または中断状態を変更しません。 このコマンドは、特定のイベントに関連付けられているファースト チャンス コマンドまたはセカンド チャンス コマンドを変更したいけれども、それ以外は何も変更したくない場合に使用できます。
-h オプションを含める場合 (または cc、hc、bpec、または ssec イベントが指定されている場合)、sxe、sxd、sxn、および sxi コマンドは、例外またはイベントの処理状態を制御します。 それ以外のすべての場合、これらのコマンドは例外またはイベントの中断状態を制御します。
中断状態を設定する場合、これらのコマンドには次の効果があります。
コマンド | ステータス名 | 説明 |
---|---|---|
sxe | Break (有効) |
この例外が発生すると、他のエラー ハンドラーがアクティブ化される前に、すぐにデバッガーがターゲットに割り込みます。 この種の処理は、ファースト チャンス処理と呼ばれます。 |
sxd | セカンド チャンスの割り込み (無効) |
この種類のファースト チャンス例外では、デバッガーは割り込みません (ただしメッセージは表示されます)。 他のエラー ハンドラーがこの例外に対処できない場合は、実行が停止し、デバッガーがターゲットに割り込みます。 この種の処理は、セカンド チャンス処理と呼ばれます。 |
sxn | 出力 (通知) |
この例外が発生したときは、デバッガーはターゲット アプリケーションに一切割り込みません。 ただし、この例外についてユーザーに通知するメッセージが表示されます。 |
sxi | Ignore | この例外が発生したときは、デバッガーはターゲット アプリケーションに割り込まず、メッセージも表示されません。 |
処理状態を設定する場合、これらのコマンドには次の効果があります。
コマンド | ステータス名 | 説明 |
---|---|---|
sxe | Handled | このイベントは、実行が再開されたときに処理済みと見なされます。 |
sxd、sxn、sxi | 未処理 | このイベントは、実行が再開されたときに未処理と見なされます。 |
-h オプションは、イベントではなく例外と共に使用できます。 このオプションを ch、bpe、または sse と共に使用して、それぞれ hc、bpec、または ssec の処理状態を設定します。 -h オプションを他のイベントと共に使用しても、効果はありません。
-c または -c2 オプションを hc、bpec、または ssec と共に使用して、指定されたコマンドをそれぞれ ch、bpe、または sse に関連付けます。
次の例では、sxe コマンドを使用して、アクセス違反イベントの中断状態を最初の機会に中断するように設定し、その時点で実行されるファースト チャンス コマンドを r eax に設定しています。 次に、sx- コマンドを使用して、処理状態を変更せずに、ファースト チャンス コマンドを r ebx に変更します。 最後に、アクセス違反イベントの現在の設定を示す sx 出力の一部が表示されます。
0:000> sxe -c "r eax" av
0:000> sx- -c "r ebx" av
0:000> sx
av - Access violation - break - not handled
Command: "r ebx"
. . .