Visual Studio 2008 - показать кучу - PullRequest
8 голосов
/ 22 марта 2009

Можно ли просмотреть кучу и стек во время отладки?

Ответы [ 5 ]

10 голосов
/ 22 марта 2009

AFAIK, основными окнами, которые вы хотите использовать, являются местные ( Ctrl + Alt + V , L ) и Autos ( Ctrl + Alt + V , L ), которые MSDN имеет как:

В окне Locals отображаются переменные, локальные для текущего контекста или области видимости. Обычно это означает процедуру или функцию, которую вы выполняете в данный момент. Отладчик заполняет это окно автоматически. В Visual C #, когда помощник по исключениям отключен, в окне Locals также отображается псевдопеременное $ исключение, когда есть активное исключение. Вы можете расширить псевдопеременную, чтобы увидеть детали исключения.

В окне Autos отображаются переменные, используемые в текущей строке кода и в предыдущей строке кода. Для родного C ++ в окне Autos также отображаются возвращаемые функцией значения. Как и окно Locals, окно Autos автоматически заполняется отладчиком.

... а для стека есть окно Call Stack (Debug -> Windows -> Call Stack) или Ctl + Alt + C .

Однако я чувствую, что это не то, что вам нужно.

Если вы ищете представление «в памяти», вы можете использовать окна памяти Visual Studio, которые можно открыть из меню «Отладка -> Windows -> Память -> Память x» (где x равно 1 -4) или Ctrl + Alt + M , 1-4.

Как уже упоминали несколько человек, есть несколько других внешних инструментов, которые весьма полезны для отладки памяти (я использую в основном инструменты SysInternals и Инструменты отладки для Windows).

6 голосов
/ 22 марта 2009

Вам нужно «Окно стека вызовов» ... http://msdn.microsoft.com/en-us/library/a3694ts5.aspx

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

А для кучи "Окно памяти" ... http://msdn.microsoft.com/en-us/library/s3aw423e(VS.80).aspx

Окно «Память» предоставляет обзор пространства памяти, используемого вашим приложением.

«Восстановление скрытых команд отладчика» также может быть полезно ... http://msdn.microsoft.com/en-us/library/9k643651(VS.80).aspx

Когда вы войдете в память отладки, другие отладчики будут более полезны. Как кто-то предложил, WinDbg отлично подходит для отладки памяти. Я сам использую IDA Pro Disassembler.

0 голосов
/ 13 июля 2017

Я знаю, что это старый вопрос, но я решил, что все равно его обновлю ...

Visual Studio 2015 поставляется с монитором использования памяти, встроенным прямо в панель инструментов диагностики. Если вы делаете снимки до, во время и после того, что хотите проверить, вы можете задним числом посмотреть на вид кучи этих снимков.

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 22 марта 2009

Если вы действительно хотите по какой-то причине взглянуть на необработанную память, вы можете открыть окно отладки «Память» из «Debug->Windows->Memory» и написать адрес, на который хотите посмотреть, в поле редактирования. Вы также можете написать в поле для редактирования любое выражение, которое соответствует адресу, и оно покажет вам этот адрес, например &variable

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

0 голосов
/ 22 марта 2009

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

Средства отладки Microsoft для Windows

...