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 などのモジュールには影響がありません。

参照

処理手順

方法 : マイ コードのみにステップ インする

概念

マネージ実行プロセス

その他の技術情報

マネージ コードのデバッグ

実行中のプロセスへのアタッチ