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