JIT の最適化とデバッグ
マネージ アプリケーションをデバッグするとき、Visual Studio では、既定で、ジャスト イン タイム (JIT: Just-In-Time) コードの最適化が省略されています。JIT 最適化の省略とは、最適化されていないコードをデバッグすることを示します。最適化されていないため、コードの実行速度はやや遅くなりますが、デバッグで操作できる内容はより詳細になります。最適化されたコードをデバッグするのは困難であるため、最適化されたコードで発生するバグが、非最適化バージョンでは再現しないときにのみお勧めします。
JIT 最適化は、Visual Studio の [モジュールの読み込み中に JIT 最適化を抑制する] オプションで制御されます。このオプションは、[オプション] ダイアログ ボックスの [デバッグ] ノードの下にある [全般] ページにあります。
[モジュールの読み込み中に JIT 最適化を抑制する] オプションをオフにすると、最適化された JIT コードをデバッグできます。ただし、最適化されたコードはソース コードとは一致しないため、デバッグ機能は制限されます。そのため、[ローカル] や [自動変数] などのデバッガー ウィンドウには、最適化されていないコードで利用できるのと同じ情報が表示されないことがあります。
もう 1 つの重要な違いは、マイ コードのみを使用したデバッグの問題です。マイ コードのみでデバッグすると、デバッガーでは、最適化されたコードはユーザー コードではないと見なされ、これらのコードはデバッグ中に表示されません。このため、JIT の最適化されたコードをデバッグする場合でも、マイ コードのみをオフに切り替えるという選択肢も考えられます。詳細については、「[NIB] 12/13 方法: マイ コードのみにステップ インする」を参照してください。
前述したように、モジュールを読み込むと、コードの [モジュールの読み込み中に JIT 最適化を抑制する] オプションではコードの最適化が省略されます。実行中のプロセスにアタッチする場合、既に読み込まれ、JIT でコンパイルされ、最適化されているコードが含まれることがあります。このようなコードの場合、[モジュールの読み込み中に JIT 最適化を抑制する] オプションの影響はありません。ただし、アタッチ後に読み込まれたモジュールには影響があります。さらに、[モジュールの読み込み中に JIT 最適化を抑制する] オプションは、NGEN で作成された WinForms.dll などのモジュールには影響がありません。
参照
処理手順
[NIB] 12/13 方法: マイ コードのみにステップ インする