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