Просмотр регистров в аварийном дампе

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

10.12.2008 21:12:32
4 ОТВЕТА
РЕШЕНИЕ

В зависимости от соглашения о вызовах вы можете получить некоторые из регистров, которые сохраняются в стеке. Например, в соглашении о вызовах cdecl все регистры, кроме EAX, ECX и EDX, должны быть сохранены как вызывающим, так и вызываемым. Эти три регистра могут быть закрыты, поэтому вы, как правило, не сможете получить их значения выше в стеке вызовов. Если функция не использует регистр, который должен быть сохранен, она не будет его сохранять, но, поскольку она не использует его, этот регистр имеет то же значение в следующем кадре более высокого стека.

2
25.12.2008 16:39:23

Проведя некоторое исследование и немного подумав об этом, я понял, что это, вероятно, невозможно. Мини-дамп сбоя сохраняет определенные области памяти процесса (в зависимости от флагов, переданных функции MiniDumpWriteDump ()) и достаточное количество информации о состоянии для воссоздания среды, в которой произошел сбой в отладчике. Он не имеет состояния процессора в каждой инструкции или даже в каждом кадре стека, он знает только о состоянии процессора, когда произошло исключение.

1
11.12.2008 04:58:55

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

-1
25.12.2008 16:18:49

В оптимизированных сборках верно, что некоторая информация в стеке может быть отброшена, однако вы можете попросить отладчик попытаться показать вам информацию для данного стекового фрейма. Сначала выполните « kn», чтобы увидеть стек с номерами кадров, затем попробуйте « .frame /c [frame]» или « .frame /r [frame]».

Проверьте справку (" .hh") для получения дополнительной информации.

0
29.09.2009 16:08:20