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


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

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

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

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

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

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

См. также

Задачи

[NIB] 12/13 Практическое руководство. Переход в пошаговый режим выполнения "Только мой код"

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

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

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

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

Присоединение к выполняемым процессам