Wie erkennen Sie (und Zugang zu bekommen) modules / Debug-Symbole zu verwenden, wenn ein Fenster vorgesehen .DMP oder .minidmp

StackOverflow https://stackoverflow.com/questions/402314

Frage

In einer Art und Weise von folgenden auf ein Windows * DMP-Datei zu lesen

eine Abbilddatei aus zufälliger Kunde erhielt, die Debug-Sitzung läuft den Absturz zu sehen, finden Sie oft es in einem MS oder anderer Dritten Bibliothek ist. Das nächste Problem ist, dass Sie nicht das Wissen des PC-Setup in einem solchen Ausmaß haben, dass Sie Ihnen die tatsächlich verfügbaren Module haben sicherstellen können.

Zum Beispiel ich zur Zeit stecken versuchen, Symbole für ntdll.dll (5.01.2600.5512) zu laden zu bekommen. In MSVC 2005 der Pfad-Spalte in der Modulliste Fenster zeigt ein * vor dem vollständig pathed Dateinamen und weigert Symbole I für XP / SP1 / SP1a / SP2 / SP3 heruntergeladen haben, zu laden.

Ich habe das Symbol Server-Setup aus dem Internet und speichern Sie in einem lokalen Cache herunterladen, die für Module adaequat gewesen zu sein scheint, die mich auf meinem PC verfügen. Mit GUI equivelant der Methode

Set _NT_SYMBOL_PATH=srv*d:\SymbolCache*\\server1\Third-Party-PDB;srv*d:\SymbolCache*\\server2\Windows\Symbols*http://msdl.microsoft.com/download/symbols

Vielleicht habe ich die falschen Symbole, sondern als neues ist das Herunterladen nicht, wohin gehen wir zum nächsten? Muss ich den Kunden kontaktieren und fragen, welche SP sie installiert haben, und alle anderen Patches? Muss ich, um diese Maschine zu installieren und dann den Debugger mit dem DMP-Datei laufen bis zu den Symbolen zu bekommen ich brauche?

War es hilfreich?

Lösung

Was verwenden Sie die minidump zu debuggen? Das heißt, WinDBG oder Visual Studio? Und wie wurde die minidump erzeugt?

Es sollte genügend Informationen im minidump sein, um System-DLL-Symbole richtig zu lösen. Verwenden Sie einen lokalen Download von Symbolen oder http://msdl.microsoft.com/ ?

Update: Sie sollten die öffentlichen Microsoft-Symbolspeicher hinzuzufügen Lage sein Tools-> Optionen-> Debugging-> Symbols-> Symboldatei (PDB) Positionen und laden Sie dann manuell die Symbole mit der rechten Maustaste auf das Modul in das Fenster Module und laden sie sie, wenn sie nicht automatisch erfolgt.

Es ist auch möglich (wahrscheinlich), dass VS 2005 nicht _NT_SYMBOL_PATH sieht minidump Symbole zu lösen.

Andere Tipps

Wenn Sie mit WinDbg (Teil der Debugtools für Windows Paket), dann ist es einfach, die richtigen Symbole zu haben für Sie von Microsoft automatisch ziehen. Konfigurieren Sie den Symbolpfad mit dem „.symfix“ (oder „.symfix +“, um einfach zu Ihrem bestehenden Symbolsuchpfad anhängen) Befehl.

Sobald Sie haben das getan, und Sie haben das Crash-Dump geladen in WinDbg, Typ „.reload / f“ WinDbg zu bewirken, dass die Symbole neu zu laden. Es werden die Informationen in der Dump-Datei verwenden, selbst die richtigen Symbole von der Microsoft-öffentlichen Symbolserver zu ziehen, unabhängig davon, was DLLs Sie auf Ihrem Rechner haben.

aus irgendeinem Grunde Wenn die Symbole Laden nicht richtig, nachdem Sie dies getan haben, geben Sie „! Sym laut“ in WinDbg Kommandofenster und lädt wieder die Symbole. Als WinDbg sie zu laden versucht, sehen Sie es irgendwelche Fehler Ausgabe, die es bei der Suche / Ladevorgang trifft. Diese Fehlermeldungen helfen Ihnen weiter zu diagnostizieren, was nicht in Ordnung ist und warum die richtigen Symbole nicht geladen werden.

Dieser Beitrag hat Informationen, die möglicherweise auch von nutzen sein.

Wenn Sie „Set _NT_SYMBOL_PATH = srv...“ in eine Eingabeaufforderung sind die Eingabe gibt es zwei Dinge zu beachten:

  • cmd.exe die set Befehl nicht Leerzeichen ignorieren, so definiert dieser eine Variable namens "_NT_SYMBOL_PATH", nicht "_NT_SYMBOL_PATH".
  • Sie müssen den Debugger als Kind dieser Eingabeaufforderung starten. Allerdings müssen Sie dies nicht tun, wenn Sie die Systemsteuerung zu verwenden persistent Umgebungsvariablen zu setzen, oder wenn Sie den setx Befehl verwenden (in Windows Vista oder einer der Windows Resource Kits).

Wenn Sie den Symbolpfad eine andere Art und Weise sind einstellen, dann gilt dies nicht.

Versuchen Sie, die folgenden Anweisungen unter dieses Kbartikel , und stellen Sie sicher, dass Ihr Symbolpfad konfiguriert ist, richtig, dass WinDbg hat Zugang zu ihnen, und dass die ntdll Symbole (zum Beispiel) werden Ihre Symbol-Cache tatsächlich heruntergeladen. Der Artikel enthält auch Anweisungen, wie manuell herunterladen und Symbole überprüfen in Ihnen über das SymChk Werkzeug zwischenzuspeichern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top