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


Просмотр кода дизассемблирования в отладчике Visual Studio (C#, C++, Visual Basic, F#)

В окне Дизассемблированный код отображается код сборки, соответствующий инструкциям, созданным компилятором. При отладке управляемого кода эти инструкции ассемблера соответствуют присущему данному объекту коду, созданному компилятором JIT, а не промежуточному языку (MSIL), созданному компилятором Visual Studio.

Примечание.

Чтобы воспользоваться всеми возможностями окна Дизассемблированный код, изучите основы программирования на языке ассемблера. Справочные материалы для наборов инструкций Intel находятся в 2-м томе руководства по архитектуре. Этот материал обычно относится к наборам инструкций AMD, а также.

Эта возможность доступна, только если включена отладка на уровне адреса. Она недоступна для отладки скриптов и SQL.

В дополнение к инструкциям ассемблера в окне Дизассемблированный код могут отображаться следующие сведения:

  • Адреса в памяти, где располагается каждая из инструкций. Для собственных приложений это фактические адреса в памяти. Для кода на Visual Basic или C# это смещение относительно начала функции.

  • Исходный код, из которого получается код сборки.

  • Байты кода, то есть байтовое представление реальных инструкций компьютера или языка MSIL.

  • Символьные имена для адресов памяти.

  • Номера строк, соответствующие исходному коду.

Инструкции на языке ассемблера состоят из мнемоник, представляющих собой сокращения имен инструкций, и символов, которые обозначают переменные, регистры и константы. Каждую инструкцию машинного кода представляет одна мнемоника ассемблера, за которой следует один или несколько необязательных символов.

Код на ассемблере активно использует регистры процессора, а при использовании управляемого кода — регистры среды выполнения. Вы можете использовать окно Дизассемблированный код в сочетании с окном Регистры, которое позволяет изучить содержимое регистров.

Чтобы просмотреть инструкции машинного кода в необработанной числовой форме, а не на языке ассемблера, используйте окно Память или выберите Байты кода в контекстном меню в окне Дизассемблированный код.

Использование окна дизассемблирования

Чтобы включить окно Дизассемблированный код, выберите в разделе Сервис>Параметры>Отладка параметр Включить отладку на уровне адреса.

Чтобы открыть окно Дизассемблированный код во время отладки, выберите Windows>Дизассемблированный код или нажмите сочетание клавиш ALT+8.

Примечание.

В зависимости от установок или выпуска сервера доступные диалоговые окна и команды меню могут отличаться от описанных в справке. Чтобы изменить параметры, выберите Импорт и экспорт параметров в меню Сервис . Дополнительные сведения см. в разделе "Сброс всех параметров".

Чтобы включить или отключить вывод дополнительных сведений, щелкните правой кнопкой в окне Дизассемблированный код и установите или снимите в контекстном меню соответствующие флажки.

Желтая стрелка, расположенная в левом поле, отмечает текущую точку выполнения. Для собственного кода точка выполнения соответствует счетчику команд ЦП. В этом расположении отображается следующая инструкция, которая будет выполнена в программе.

Перемещение вверх или вниз в области памяти

При просмотре содержимого памяти в окне Память или Дизассемблированный код для перемещения вверх и вниз по области памяти можно использовать вертикальную полосу прокрутки.

  1. Для перемещения на страницу вниз (к старшему адресу памяти) щелкните вертикальную полосу прокрутки ниже того места, где находится бегунок.

  2. Для перемещения на страницу вверх (к младшему адресу памяти) щелкните вертикальную полосу прокрутки выше того места, где находится бегунок.

    Обратите внимание, что вертикальная полоса прокрутки работает не в стандартном режиме. Современные персональные компьютеры имеют огромное адресное пространство, поэтому в нем достаточно легко заблудиться, перетаскивая бегунок полосы прокрутки в произвольное расположение. По этой причине бегунок "подпружинен" и всегда остается в центре полосы прокрутки. В приложениях машинного кода можно постранично перемещаться вверх и вниз, однако нельзя свободно использовать полосу прокрутки.

    В управляемых приложениях дизассемблирование ограничивается одной функцией и прокруткой можно пользоваться в обычном режиме.

    Обратите внимание, что старшие адреса отображаются в нижней части окна. Для просмотра старших адресов следует перемещаться вниз, а не вверх.

Перемещение вверх или вниз одной инструкции

  • Щелкните стрелку, расположенную над или под вертикальной полосой прокрутки.