Поделиться через


JIT-отладка и оптимизация

При отладке управляемого приложения Visual Studio по умолчанию подавляет оптимизацию JIT-кода. Подавление JIT-оптимизации означает, что отлаживается не оптимизированный код. Код выполняется немного медленнее, поскольку он не оптимизирован, но отладка получается гораздо более тщательной. Отладка оптимизированного кода сложнее и рекомендуется, только если ошибки возникают в оптимизированном коде, но не могут быть воспроизведены в не оптимизированной версии.

JIT-оптимизация контролируется в Visual Studio параметром Отключить JIT-оптимизацию при загрузке модуля. Можно найти этот параметр на странице Общие в узле Отладка в диалоговом окне Параметры.

Если снять флажок Отключить JIT-оптимизацию при загрузке модуля, можно отлаживать оптимизированный JIT-код, но возможности отладки могут быть ограничены, поскольку оптимизированный код не соответствует исходному коду. В результате окна отладчика, такие как Локальные и Видимые, могут отображать гораздо меньше сведений, чем при отладке не оптимизированного кода.

Другое важное различие касается отладки с использованием "Только мой код". При отладке с "Только мой код" отладчик рассматривает оптимизированный код как код, не написанный пользователем, который не следует отображать во время отладки. Следовательно, при отладке JIT-оптимизированного кода вам, возможно, следует отключить "Только мой код". Дополнительные сведения см. в разделе Пошаговое выполнение "только моего кода".

Следует помнить, что параметр Отключить JIT-оптимизацию при загрузке модуля отключает оптимизацию кода при загрузке модулей. При присоединении к уже запущенному процессу, он может содержать код, который уже загружен, скомпилирован JIT и оптимизирован. Параметр Отключить JIT-оптимизацию при загрузке модуля не влияет на такой код, хотя будет влиять на модули, которые будут загружены после подключения. Кроме того, параметр Отключить JIT-оптимизацию при загрузке модуля не влияет на модули, созданные с помощью NGEN — например WinForms.dll.

См. также

Основные понятия

Запуск, приостановка, шаг, последовательное выполнение и остановка отладки в Visual Studio

Процесс управляемого выполнения

Другие ресурсы

Отладка управляемого кода

Присоединение к выполняемым процессам с использованием отладчика Visual Studio