"Suppress JIT optimization on module load"
デバッグ オプションの効果は何ですか?
最近、COM コンポーネントを使用するアプリを正常にデバッグできるようにするために、オフにする必要がありました。
オフにすることでどのようなリスクがありますか?
"Suppress JIT optimization on module load"
デバッグ オプションの効果は何ですか?
最近、COM コンポーネントを使用するアプリを正常にデバッグできるようにするために、オフにする必要がありました。
オフにすることでどのようなリスクがありますか?
JIT最適化を抑制するということは、最適化されていないコードをデバッグしていることを意味します。最適化されていないため、コードの実行速度は少し遅くなりますが、デバッグエクスペリエンスははるかに徹底的です。最適化されたコードのデバッグはより難しく、最適化されたコードで発生するが、最適化されていないバージョンでは再現できないバグが発生した場合にのみ推奨されます。
[モジュールロード時にJIT最適化を抑制する]オプションをオフにすると、最適化されたJITコードをデバッグできますが、最適化されたコードがソースコードと一致しないため、デバッグ機能が制限される場合があります。その結果、[ローカル]ウィンドウや[自動]ウィンドウなどのデバッガウィンドウには、最適化されていないコードをデバッグしている場合ほど多くの情報が表示されない場合があります。
これは、JIT コードがデバッグ用に最適化されないことを意味します。例えば:
private int Add(int x, int y)
{
int notUsed = 2;
return x + y;
}
このコードでは notUsed 変数は、このコードが不要であるため、最適化によって JIT コードから除外されます。最適化されたコードのデバッグを開始すると、作成したコードとは異なるように見える場合があります (ただし、同じことを行います)。最適化のもう 1 つの例は、メソッドのインライン化です。