Ich untersuche eine Windows-Dump-Datei in WinDBG. Ich kann den Call-Stack-Rahmen mit dem Befehl .frame wechseln, aber ich habe festgestellt, dass die Register immer den letzten Kontext enthalten. Ich meine, wenn es möglich ist, den Kontext wiederherzustellen, der zu einem bestimmten Call-Stack-Frame gehört, der nicht der oberste ist?Wie die Register-Wert auf einem bestimmten Call-Stack-Frame in Windbg zu überprüfen
6
A
Antwort
7
Wenn Sie ein x64 Ziel debuggen, können Sie verwenden:
.frame /r
die Register in dem Rahmen zu sehen. Diese Information basiert auf den Abwicklungsdaten in dem Bild, so dass es ziemlich zuverlässig ist. Sie können den Kontext auch ändern mit:
.frame /c
Auf dem x86 gibt es keine Abwicklungsinformationen, so dass dieser Trick nicht funktioniert. .frame zeigt Ihnen immer noch etwas für die Register an, aber es ist nicht so wahrscheinlich, dass es korrekt ist (es wird im Grunde nur durch Glück korrigiert).
0
versuchen Sie findthis.py, die Art der CFI (Call Frame Info) durch Zerlegung der Prolog jedes Rahmens im Callstack erhalten.
http://nick.luckygarden.org/find-this-ptr-within-a-callstack-in-a-dump-file/
Verstanden. Ich kann die Register im Stack nur indirekt finden. –