.NET 例外をデバッグする
例外とは、実行時に発生するエラーであり、通常はプログラムの通常の実行フローを中断させます。 処理されない例外は、発生したスレッドを終了します。 シングルスレッドアプリでは、通常、プロセス全体が終了します。 マルチスレッドアプリでは、他のスレッドが実行中であってもプロセスが継続されることがあります。
デバッグを支援するために、JetBrains Rider では、任意の例外、または特定の種類の例外がスローされたときにプログラムの実行を一時停止するようにデバッガーを明示的に設定できます。 この一時停止は例外発生直後、例外処理が実行される前に実行されるため、プログラムの スタックフレームと周囲のコンテキストをインスペクションできます。
例外のブレークポイント
コード内または外部コード内の例外(処理済みまたは未処理)をデバッグするには、特別な 例外ブレークポイントを作成する必要があります。 ラインブレークポイントとは異なり、例外ブレークポイントは特定のコード行に割り当てられるのではなく、特定の例外タイプ(たとえば .NET の場合、 Exception 型から継承された任意の型)、あるいは任意の CLR 例外に割り当てられます。
例外ブレークポイントを追加する
次のいずれかを実行します:
メインメニューから を選択します。
ブレークポイントダイアログ (Ctrl+Shift+F8 または ) で、
をクリックし、 CLR 例外ブレークポイント を選択します。
開いたダイアログで、必要な例外タイプ名を指定し、 OK をクリックします。 ブレークポイントは、 CLR 例外ブレークポイント の下の ブレークポイントダイアログ内のブレークポイントリストに追加されます。

ブレークポイントのプロパティを指定し、 終了 をクリックします。
特定の例外を無視する
ブレークポイントダイアログの CLR 例外ブレークポイント カテゴリには、 任意の例外 ブレークポイントが含まれています。 これを有効にすると、その プロパティが、プログラムによってスローされるすべての .NET CLR 例外の照合に使用されます。
このカテゴリに 特定の例外タイプのブレークポイントを追加すると、 任意の例外 のプロパティがオーバーライドされます。
そのため、 任意の例外 ブレークポイントを有効にし、スキップしたい例外の種類にブレークポイントを追加し、そのプロパティで 実行の中断 チェックボックスをオフにします。 この設定により、デバッガーは無視する例外を除くすべての例外で停止します。
この動作はさらに細かく調整できます。たとえば、 任意の例外 ブレークポイントの 一時停止する場合 グループのすべてのチェックボックスを選択し、特定の例外タイプ用に 外部コード チェックボックスをオフにすることができます。 この方法で、ライブラリ コードでスローされた特定タイプの例外のみを無視し、それ以外のすべての例外ではブレークできます。
例外ブレークポイントのプロパティ
項目 | 説明 |
|---|---|
有効 | 選択したブレークポイントを有効にするには、このチェックボックスを選択します。 ブレークポイントが無効になっている場合、デバッグ中にブレークポイントにヒットすることはありません。 左側のビューのチェックボックスを使用して、ブレークポイントを有効 / 無効にすることもできます。 |
実行の中断 | ブレークポイントに到達したときにデバッガーがプログラムを一時停止するようにするには、このチェックボックスをオンにします。 プログラムを一時停止せずに、ある時点で 一部のデータをログに記録したり、 式を計算したりするためだけにブレークポイントを使用する場合は、このオプションを無効にすることができます。 |
ログ | デバッガー出力で ヒットしたブレークポイントをログに記録する場合は、これらのチェックボックスを選択します。 ブレークポイントがヒットしたという事実をログに記録するか、ブレークポイントがヒットしたときにプログラムの完全なスタックトレースをログに記録するか、その両方を選択できます。 ロギングにブレークポイントを使用する場合は、通常、 中断 チェックボックスをオフにする必要があります。 |
ブレークポイントに達するまで無効にする | リストから、現在のブレークポイントに 依存させるブレークポイントを選択します。 さらに、現在のブレークポイントを有効にしてヒットした後で再度無効にするか、有効のままにするかを選択することもできます。 |
一時停止する場合 | このチェックボックスのグループを使用すると、例外がスローされた場所 (ユーザーコード または 外部コード) と処理方法に応じて、例外で停止するかどうかを構成できます。 たとえば、外部コードでスローされ、ユーザーコードで処理された例外の場合のみ、デバッガーを停止したい場合があります。 |
デバッグワークフロー
例外ブレークポイントを追加すると、一致する例外がスローされたときに JetBrains Rider はプログラム実行を中断し、例外の種類、対応する呼び出しへのクリック可能なリンクを含むコールスタックを表示する例外ポップアップが表示されます:

このポップアップを使用して、例外と周囲のコンテキストを調査します。
Stop: デバッグセッションを停止します。 これは、処理済みの例外でブレークし、
catch節に移動したくない場合に役立ちます。ミュートと再開: プログラムの実行を再開し、同様のブレークポイントを無視する方法として機能する新しい例外ブレークポイントを追加します。 たとえば、処理されていない
NotImplementedExceptionでブレークした場合、未選択の 未処理 チェックボックス付きでNotImplementedException用の新しい例外ブレークポイントが作成されます。再開: 例外が処理された場合、またはマルチスレッドプロセスをデバッグしている場合は、プログラムを再開すると効果的です。
スタックトレースエクスプローラー: スタックトレースウィンドウで例外の詳細を開き、スタックトレースをすぐにまたは後で調べることができます。
ブレークポイントを表示: この例外によってトリガーされた例外ブレークポイントのプロパティを開きます。
ブレークポイントの作成: 例外タイプとコンテキストに一致する新しい例外ブレークポイントを作成します。 例: 未処理の
NotImplementedExceptionによって 任意の例外 ブレークポイントがトリガーされた場合、未処理のNotImplementedExceptionの新しいブレークポイントが作成されます。