JIT-отладка и оптимизация
Этот раздел применим к:
Выпуск |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
Только управляемый код |
|||
Pro, Premium и Ultimate |
Только управляемый код |
При отладке управляемого приложения Visual Studio по умолчанию подавляет оптимизацию JIT-кода. Подавление JIT-оптимизации означает, что отлаживается не оптимизированный код. Код выполняется немного медленнее, поскольку он не оптимизирован, но отладка получается гораздо более тщательной. Отладка оптимизированного кода сложнее и рекомендуется, только если ошибки возникают в оптимизированном коде, но не могут быть воспроизведены в не оптимизированной версии.
JIT-оптимизация контролируется в Visual Studio параметром Отключить JIT-оптимизацию при загрузке модуля. Можно найти этот параметр на странице Общие в узле Отладка в диалоговом окне Параметры.
Если снять флажок Отключить JIT-оптимизацию при загрузке модуля, можно отлаживать оптимизированный JIT-код, но возможности отладки могут быть ограничены, поскольку оптимизированный код не соответствует исходному коду. В результате окна отладчика, такие как Локальные и Видимые, могут отображать гораздо меньше сведений, чем при отладке не оптимизированного кода.
Другое важное различие касается отладки с использованием "Только мой код". При отладке с "Только мой код" отладчик рассматривает оптимизированный код как код, не написанный пользователем, который не следует отображать во время отладки. Следовательно, при отладке JIT-оптимизированного кода вам, возможно, следует отключить "Только мой код". Дополнительные сведения см. в разделе Практическое руководство. Переход в пошаговый режим выполнения "Только мой код".
Следует помнить, что параметр Отключить JIT-оптимизацию при загрузке модуля отключает оптимизацию кода при загрузке модулей. При присоединении к уже запущенному процессу, он может содержать код, который уже загружен, скомпилирован JIT и оптимизирован. Параметр Отключить JIT-оптимизацию при загрузке модуля не влияет на такой код, хотя будет влиять на модули, которые будут загружены после подключения. Кроме того, параметр Отключить JIT-оптимизацию при загрузке модуля не влияет на модули, созданные с помощью NGEN — например WinForms.dll.
См. также
Задачи
Практическое руководство. Переход в пошаговый режим выполнения "Только мой код"
Основные понятия
Процесс управляемого выполнения