Im Allgemeinen kann ich keine Auflistung der Bedeutung der Werte finden, die die verschiedenen Felder in WinDbgs Ausgabe des Befehls !analyze -v
enthalten können.
Die Suche ist schwierig, da die Ausgabe des Befehls oft gepostet wird, ohne dass die Feldwerte (wie DEFAULT_BUCKET_ID und PRIMARY_PROBLEM_CLASS) explizit angesprochen werden. Gibt es eine Referenzliste?
Um genauer zu sein: Während der Analyse eines Speicherauszugs hat die Ausgabe des Befehls !analyze -v
angegeben, dass sowohl DEFAULT_BUCKET_ID als auch PRIMARY_PROBLEM_CLASS "STACKIMMUNE" sind. Was bedeutet das?
Zuerst eine kleine Einführung, wie !analyze
funktioniert.
Wenn !analyze
versucht, den Grund für eine Zugriffsverletzung (und einige andere Arten von Ausnahmen zum Beispiel) zu ermitteln , SEH-Ausnahmen , C ++ - Exceptions, Integer-Überlauf, Division durch Null, etc.), es schaut auf die Aufrufstapel des Threads, der die Ausnahme ausgelöst hat und herausfindet, was sich oben auf dem Thread befindet. Es sind jedoch nicht alle Stapelrahmen nützlich.
Zum Beispiel sehen Sie für C ++ - Ausnahmen kernel32!RaiseException
und your_module!__except_handler3
an der Spitze des Stapels. Diese Frames müssen übersprungen werden, da sie die Ursache des Problems sehr unwahrscheinlich sind. Manchmal muss !analyze
viele Frames überspringen, um zu dem interessanten Frame zu gelangen. Sehen Sie sich ein Beispiel für eine andere Stack Overflow-Frage an, in der der betreffende Code enthalten ist ~ 40 Rahmen darunter.
Um Ihre Frage zu beantworten: STACKIMMUNE
ist ein Hinweis darauf, dass alle Frames im Call-Stack übersprungen werden. Dies kann passieren, wenn der Stapel beschädigt ist oder wenn Sie falsche Symbole haben und !reload /i
verwendet haben, um eventuelle Fehler zu ignorieren, und wahrscheinlich in vielen anderen Fällen.
Tags und Links windbg