Я исследую файл дампа Windows в WinDBG. Я могу переключать кадр стека вызовов командой .frame, но обнаружил, что регистры всегда содержат последний контекст. Я имею в виду, возможно ли восстановить контекст, принадлежащий определенному фрейму стека вызовов, который не является верхним?
Как проверить значение регистров в определенном кадре стека вызовов в windbg
Ответы (2)
Если вы отлаживаете цель x64, вы можете использовать:
.frame /r
Для просмотра регистров в кадре. Эта информация основана на данных раскрутки в образе, поэтому она довольно надежна. Вы также можете изменить контекст с помощью:
.frame /c
На x86 информация о раскрутке отсутствует, поэтому этот трюк не работает. .frame по-прежнему покажет вам что-то для регистров, но вряд ли это будет правильно (в основном это будет правильно только по счастливой случайности).
person
snoone
schedule
06.04.2012
Понятно. Я могу найти регистры в стеке только косвенно.
- person Fan Yang; 13.04.2012
попробуйте findthis.py, который является своего рода получением CFI (информация о кадре вызова) путем разборки пролога каждого кадра в стеке вызовов.
http://nick.luckygarden.org/find-this-ptr-within-a-callstack-in-a-dump-file/
person
Nick X
schedule
30.12.2014