何らかの理由で、関数の最適化されたコンパイラ出力を確認すると便利な場合や興味深い場合があります。
管理されていないC/C ++コードの場合、これを行うための私のお気に入りの方法は、リリースモードでコンパイルし、目的の関数にブレークポイントを固定し、実行して、ブレークポイントに達したときにVisualStudioで逆アセンブリを表示することです。
最近、C#プロジェクトでこれを試しましたが、その手法が機能しないことがわかりました。リリースモードでも、私が見る分解は明らかに最適化されていません。(Visual Studio 2010で)「デバッグ...オプションと設定...デバッグ...一般...モジュールロード時のJIT最適化の抑制」オプションを見つけて無効にしました。これにより、おそらく私が望むものに近づくことができます。これで、実行しようとすると警告が表示されますが、ブレークポイントで停止して、分解を確認することができません。
したがって、関数のCLR(4.0)ジッターの分解され最適化された出力を確認したい場合、それを実行するための最良の方法は何ですか?明確にするために、ILの逆アセンブル(Reflectorで確認できます)だけでなく、x86(またはできればx86_64)の逆アセンブルを確認したいと思います。