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


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

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

Замечание

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

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

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

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

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

  • Код байтов, то есть байтовые представления фактического компьютера или инструкций MSIL.

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

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

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

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

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

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

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

Чтобы открыть окно дизассемблирования во время отладки, выберите отладку>Windows>Disassembly или нажмите клавиши CTRL + ALT + D.

Замечание

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

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

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

Прокрутка вверх или вниз в памяти

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

  1. Чтобы перейти к более высокому адресу памяти, щелкните вертикальную полосу прокрутки под полем прокрутки.

  2. Чтобы перейти к нижнему адресу памяти, щелкните вертикальную полосу прокрутки над пальцем.

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

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

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

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

  • Щелкните стрелку в верхней или нижней части вертикальной полосы прокрутки.