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


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

Обновлен: Ноябрь 2007

Этот раздел применим к:

Выпуск

Visual Basic

C#

C++

Web Developer

Express

Тема применяется Тема применяется

Только управляемый код

Тема применяется

Standard

Тема применяется Тема применяется

Только управляемый код

Тема применяется

Pro и Team

Тема применяется Тема применяется

Только управляемый код

Тема применяется

Обозначения:

Тема применяется

Применяется

Тема не применяется

Не применяется

Тема применяется, но команда по умолчанию сокрыта

Команда или команды по умолчанию скрыты.

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

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

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

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

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

См. также

Задачи

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

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

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

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

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

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