JIT アタッチ デバッグの有効化
JIT アタッチ デバッグとは、実行可能イメージにデバッガをアタッチすることを表す用語であり、キャッチされることのない例外をスローします。アンマネージ コード内では、次のようなメッセージ ボックスが表示されたときに JIT アタッチ デバッグが実行されます。
アプリケーションを終了するには [OK] をクリックしてください。
アプリケーションをデバッグするには、[キャンセル] をクリックしてください。
[キャンセル] をクリックすると、デバッガが起動してプロセスにアタッチされます。この動作を制御するレジストリ キーは、HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\Current Version\AeDebug です。
アプリケーションにマネージ コードが含まれている場合は、共通言語ランタイムが同様のダイアログを表示し、デバッガを JIT アタッチします。このオプションを制御するレジストリ キーは HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\DbgJITDebugLaunchSetting です。
値が 0 の場合は、メッセージ ボックスを表示してユーザーの確認を求めます。この動作は、デスクトップを使用する対話形式のプロセスにだけ適用されます。サービスなど、対話形式でないプロセスの場合には、プロセスが終了されます。
.NET Framework のバージョン 1.0 および 1.1 の場合、または Windows 98 と Windows Me での .NET Framework Version 2.0 の場合には、メッセージ ボックスに次のオプションが表示されます。
続行。コンソールにスタック ダンプが出力され、プロセスが終了します。
デバッガのアタッチ。この場合、ランタイムは、DbgManagedDebugger レジストリ キーに登録されているデバッガを呼び出します。デバッガが見つからなかった場合は、プロセスが終了します。
Windows 98 および Windows Me 以外のプラットフォームでの .NET Framework Version 2.0 の場合は、次のオプションが表示されます。
送信。エラー レポートを Microsoft に送信してから、プロセスが終了します。このレポートの取得方法については、http://winqual.microsoft.com を参照してください。
送信しない。コンソールにスタック ダンプが出力され、プロセスが終了します。
デバッグ。DbgManagedDebugger レジストリ キーに登録されているデバッガが共通言語ランタイムによって呼び出されます。デバッガが見つからなかった場合は、プロセスが終了します。
値が 1 の場合は、制御が戻されます。この結果、スタック ダンプが作成され、プロセスが終了します。
値が 2 の場合は、DbgManagedDebugger レジストリ キーに登録されているデバッガを呼び出します。
値が 16 の場合、.NET Framework Version 2.0 のときに限り、プロセスが対話形式の場合には、デスクトップとの対話形式のプロセスのための上記のメッセージ ボックスが表示されます。対話形式でないプロセスの場合には、DbgManagedDebugger レジストリ キーに登録されているデバッガが共通言語ランタイムによって呼び出されます。これは、.NET Framework Version 2.0 の既定の設定です。