По той или иной причине я иногда нахожу полезным или просто интересным взглянуть на оптимизированный вывод компилятора для функции.
Для неуправляемого кода C / C ++ мой любимый способ сделать это - скомпилировать в режиме Release, вставить точку останова в интересующую функцию, запустить и просмотреть разборку в Visual Studio, когда она достигнет точки останова.
Недавно я попробовал это с проектом C # и обнаружил, что эта техника не работает. Даже в режиме Release разборка, которую я вижу, явно не оптимизирована. Я нашел и отключил (в Visual Studio 2010) опцию «Отладка ... Параметры и настройки ... Отладка ... Общие ... Подавить оптимизацию JIT при загрузке модуля», которая, предположительно, приближает меня к тому, что я хочу, только теперь он предупреждает меня, когда я пытаюсь запустить его, и тогда я не могу заставить его остановиться на точке останова, чтобы я мог видеть разборку.
Итак, если я хочу увидеть разобранный, оптимизированный вывод CLR (4.0) джиттера для функции, каков наилучший способ сделать это? Чтобы было ясно, я хотел бы увидеть разборку x86 (или предпочтительно x86_64), а не только разборку IL (которую вы можете увидеть в Reflector).