Видите адрес памяти переменной при отладке в Visual Studio? - PullRequest
0 голосов
/ 12 февраля 2020

Мне нужно использовать Visual Studio (Professional 2017) для разработки, а не мою любимую среду разработки. При отладке (и, в частности, указании стопов) я использую панель Locals (включается через Debug > Windows> Locals ) который показывает значения переменных во время выполнения. Мне также хотелось бы видеть фактический адрес памяти (например, чтобы определить, работаю ли я с тем же объектом или оценить, сколько памяти используется объектами) на этой панели - функция, которую я имею в других средах разработки. ,

Есть ли какой-нибудь трюк или плагин для просмотра адресов памяти переменных во время выполнения в Visual Studio?

Ссылки

Ответы [ 3 ]

1 голос
/ 12 февраля 2020

. NET - среда для сбора мусора. Когда выполняется G C, объекты перемещаются в памяти для консолидации свободного пространства. Таким образом, непосредственный взгляд на память, как и коллекции G C, будет смотреть на совершенно разные объекты. Если вы не работаете непосредственно в G C или не анализируете дамп памяти (без выполнения, поэтому G C), непосредственно просматривая память, бесполезно.

Просмотр указанного c объекта - любые ссылки могут ссылаться на него - используйте «идентификаторы объектов». В Locals, Autos и Watch windows щелкните правой кнопкой мыши ссылку и выберите «Make Object Id». Это генерирует символ последовательности $1, $2, ..., которые 1. используются для аннотирования отображения любых ссылок на этот объект в столбце значения; 2. может использоваться непосредственно через отладчик для просмотра этого объекта (в том числе в непосредственном окне внутри фрагментов кода, выполненных там: например. ?local.Prop.Equal($2.Prop), который я использовал ранее на этой неделе). См. https://docs.microsoft.com/en-us/visualstudio/debugger/watch-and-quickwatch-windows?view=vs-2019#bkmk_objectIds для образца.

1 голос
/ 12 февраля 2020

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

Например, если у вас есть переменная foo, &foo отображает адрес, но, как отмечено в другом ответе, это может измениться из-за уплотнения, перемещающего объекты во время G C.

0 голосов
/ 12 февраля 2020

Чтобы открыть окно памяти

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

Начните отладку, выбрав зеленый со стрелкой, нажав клавишу F5 или выбрав Отладка> Начать отладку.

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

или см. Ссылки ниже: https://docs.microsoft.com/en-us/visualstudio/debugger/memory-windows?view=vs-2017 Visual Studio, см. Адрес памяти переменной в окне просмотра

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