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


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

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

В окнах отладчика, таких как Контрольные, Видимые, Локальные, и в диалоговом окне Быстрая проверка отображаются переменные, которые хранятся в определенных областях памяти. Окно Память показывает более полную картину. Такое представление памяти может быть полезно при анализе больших частей данных (например, буферов или больших строк), которые плохо отображаются в других окнах.

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

Окно Память недоступно для отладки скриптов и SQL. Эти языки не распознают концепцию памяти.

Открытие окна "Память"

Как и другие окна отладчика, окна Память доступны только во время сеанса отладки.

Внимание

Чтобы включить окна Память, необходимо выбрать параметр Включить отладку на уровне адреса в разделе Инструменты>Параметры (или Отладка>Параметры) >Отладка>Общие.

Откройте окно памяти:

  1. Убедитесь, что в разделе Инструменты>Параметры (или Отладка>Параметры) >Отладка>Общие выбран параметр Включить отладку на уровне адреса.

  2. Запустите отладку, щелкнув зеленую стрелку, нажав клавишу F5 или выбрав команду Отладка>Начать отладку.

  3. В разделе Отладка>Windows>Память выберите Память 1, Память 2, Память 3 или Память 4. (Некоторые выпуски Visual Studio предлагают только одно окно Память.)

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

Перемещение по окну "Память"

Адресное пространство компьютера велико, и вы можете легко потерять нужное место при прокрутке окна Память.

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

В большинстве случаев необходимо найти определенное расположение памяти.

Поиск расположения памяти

Можно мгновенно перейти к указанному адресу в окне Память, используя перетаскивание или введя адрес в поле Адрес. Поле Адрес принимает буквенно-цифровые адреса и выражения, которые при вычислении дают адрес, например e.User.NonroamableId.

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

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

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

  1. Выберите в любом окне отладчика адрес памяти или переменную-указатель, содержащую адрес памяти.

  2. Перетащите адрес или указатель в окно Память.

    Этот адрес отображается в поле "Адрес ", а окно памяти настраивается для отображения этого адреса в верхней части экрана.

Введите расположение в поле "Адрес", чтобы перейти к расположению памяти:

  • Введите или вставьте адрес или выражение в поле Адрес и нажмите клавишу ВВОД или выберите значение в раскрывающемся списке в поле Адрес.

    Этот адрес отображается в поле "Адрес ", а окно памяти настраивается для отображения этого адреса в верхней части экрана.

    Снимок экрана: окно памяти.

Настройка окна "Память"

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

Измените формат содержимого памяти:

  • Щелкните правой кнопкой мыши в окне Память и выберите нужные форматы в контекстном меню.

Измените количество столбцов в окне памяти:

  • Щелкните стрелку раскрывающегося списка рядом с полем "Столбцы" и выберите число отображаемых столбцов или выберите "Авто " для автоматической корректировки на основе ширины окна.

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

Переключение динамической оценки:

  • Щелкните правой кнопкой мыши в окне Память и выберите в контекстном меню пункт Автоматический пересчет.

    Примечание.

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

Можно скрывать или отображать панель инструментов в верхней части окна Память. Когда панель инструментов скрыта, поле Адрес и другие инструменты недоступны.

Переключите экран панели инструментов:

  • Щелкните правой кнопкой мыши в окне Память и выберите в контекстном меню пункт Показать панель инструментов. Панель инструментов появится или исчезнет, в зависимости от своего предыдущего состояния.

Следуйте указателю через память (C/C++)

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

Следуйте указателю по памяти:

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

  2. Нажмите ВВОД.

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

Просмотр указателей памяти (.NET)

Если вы хотите просмотреть содержимое объекта .NET на основе указателя памяти, например адреса, полученного из моментального снимка кучи, это можно сделать с помощью {CLR}@Address нотации. Адрес должен быть указателем на память, например 0x1D102A581B0. Введите указатель памяти, используя {CLR}@Address нотацию в поле "Адрес памяти". Кроме того, можно использовать ту же нотацию для добавления часов с помощью окна "Контроль".

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