Fragensteller
Download von Symbols via symchk

Allgemeine Diskussion
-
Hallo zusammen,
ich hab mir in den letzten Tagen ein paar Informationen besorgt wie man mit dem WinDbg crashdumps analysieren kann.
Hierbei macht es natürlich Sinn, dass man die richtigen Symbols vorliegen hat.
Wenn der Rechner mit dem Internet verbunden ist fügt man als Symbol-Server einfach den 'http://msdl.microsoft.com/download/symbols' (SRV*c:\symbols*http://msdl.microsoft.com/download/symbols) ein.Nun werden die nötigen Symbols geladen und alles schaut gut aus.
Mein Problem ist, dass mein Entwicklungssystem nicht mit dem Internet verbunden ist.
Hierfür kann man mit 'symchk /r c:\windows*.dll /om c:\symbols.txt' ein Manifest erstellen.
Im Anschluss kann man auf einem anderen Rechner mit 'symchk /im c:\symbols.txt /s SRV*c:\symbols*http://msdl.microsoft.com/download/symbols' die Daten laden.
Der Inhalt sieht so aus:
Meine erste Frage: wofür stehen die Werte Hinter dem Dateinamen?...
advapi32.pdb,3F32049F550C42B09CF114A1FB8A97E92,1 advapi32.dll,4ce7b706a0000,1
...
Prinzipiell ist das eine gute Idee, aber wenn ich den WinDbg verwende wird kein Manifest erstellt.
Der WinDbg lädt die Dateien ja direkt zur Laufzeit.
Es macht auch wenig Sinn, dass ich für alle .exe-, .dll-, ...-Dateien die Symbole auf Verdacht lade.
Das dürften im Windows-Verzeichnis einige Dateien sein.
Meine zweite Fragen: Wie kann ich erkennen welche Symbols wirklich im WinDbg benötigt werden?
Danke für eure Ideen.
Gruß
Aendrew
- Typ geändert Robert BreitenhoferModerator Freitag, 15. Juni 2012 12:26 Keine Rückmeldung des Fragenstellender
Alle Antworten
-
Wenn der Rechner mit dem Internet verbunden ist fügt man als Symbol-Server einfach den 'http://msdl.microsoft.com/download/symbols' (SRV*c:\symbols*http://msdl.microsoft.com/download/symbols) ein.Nun werden die nötigen Symbols geladen und alles schaut gut aus.
Naja, einfach analysiert man Crashdumps mittels; dann spart man sich die ganze schreibarbeit...
.symfix+
.sympath+ c:\Pfad\Zu\lokalen\Symbolen
.reload
!analyze -v...advapi32.pdb,3F32049F550C42B09CF114A1FB8A97E92,1 advapi32.dll,4ce7b706a0000,1...
Meine erste Frage: wofür stehen die Werte Hinter dem Dateinamen?
Warum willst Du das wissen? Das ist ein Hash-Wert (oder was ähnliches), da es von einer DLL ja unterschiedliche Versionen gehen kann und somit auch unterschiedliche Symbole.
Es macht auch wenig Sinn, dass ich für alle .exe-, .dll-, ...-Dateien die Symbole auf Verdacht lade.
Wenn Du kein Internet hast, macht das schon sinn...
Meine zweite Fragen: Wie kann ich erkennen welche Symbols wirklich im WinDbg benötigt werden?
Das kannst Du erst feststellen, wenn Du einen Crash Dump lädst; aber dann ist es schon zu spät, da Du ja keine Internet-Verbindung hast....
Ich an Deiner Stelle würde darüber nachdenken, ob ich am Entwicklungsrechner irgendwie Internet hinbekommen würde....
Ich frage mich ja, wie Du SW entwickelst, ohne Internet... Du musst ja jedes Rad wieder neu erfinden....
Jochen Kalmbach (MVP VC++) -
...advapi32.pdb,3F32049F550C42B09CF114A1FB8A97E92,1 advapi32.dll,4ce7b706a0000,1...
Meine erste Frage: wofür stehen die Werte Hinter dem Dateinamen?
Warum willst Du das wissen? Das ist ein Hash-Wert (oder was ähnliches), da es von einer DLL ja unterschiedliche Versionen gehen kann und somit auch unterschiedliche Symbole.
Es interessiert mich einfach nur was die Inhalte bedeuten.
Mir ist z.B. schon aufgefallen, dass der letzte Wert manchmal 2 ist. Im Regelfall ist es 1.
Es macht auch wenig Sinn, dass ich für alle .exe-, .dll-, ...-Dateien die Symbole auf Verdacht lade.
Wenn Du kein Internet hast, macht das schon sinn...
Prinzipiell macht die Funktionalität natürlich Sinn.
Mir ging es um den Fall, dass man 20 Dateien benötigt und x-Tausend auf Verdacht laden muss.
Meine zweite Fragen: Wie kann ich erkennen welche Symbols wirklich im WinDbg benötigt werden?
Das kannst Du erst feststellen, wenn Du einen Crash Dump lädst; aber dann ist es schon zu spät, da Du ja keine Internet-Verbindung hast....
Ich an Deiner Stelle würde darüber nachdenken, ob ich am Entwicklungsrechner irgendwie Internet hinbekommen würde....
Ich frage mich ja, wie Du SW entwickelst, ohne Internet... Du musst ja jedes Rad wieder neu erfinden....So eine Funktion hätte ich jetzt erwartet :)
Es ist so, dass ich zwei Rechner habe.
Einer zum Entwickeln (der darf kein Interhet haben)
Einer für Recherchen etc. (mit Internet)
Gibt es nicht die Möglichkeit den Dump zu analysiert und am Schluss eine Zusammenfassung der fehlenden Symbols zu erstellt?
-
> Gibt es nicht die Möglichkeit den Dump zu analysiert und am Schluss eine Zusammenfassung der fehlenden Symbols zu erstellt?
Du kannst den Dump ohne Symbole nicht sinnvoll analysiere... Du kannst Dir natürlich die Liste der zu ladenden Symbole anzeigen lassen, ohne dass Du die Symbole brauchst:
lm
oder noch genauer
!lmi kernel32.dll
Jochen Kalmbach (MVP VC++) -
Auf meiner Maschine:
...
notepad.pdb,7DAC7B3D7D1D4E68BE2132EAB080D42C2,1
notepad.exe,47918ea228000,1
...
7DAC7B3D7D1D4E68BE2132EAB080D42C duerfte PdbSig70 sein, "signature of pdb-file"
Die 2 am Ende vielleicht PdbAge .
",1" weiß nicht.47918ea2 ist wohl "Time/Date stamp" PE-Header exe/dll.
28000 "Size of Image" PE-Header exe/dll.
",1" weiß nicht.Ich wuerde bei Dumps ohne Internet-Verbindung versuchen so vorzugehen:
Dump Analysis in a Disconnected Environment
http://blogs.msdn.com/b/pfedev/archive/2009/02/27/dump-analysis-in-a-disconnected-environment.aspxMit freundlichen Gruessen
-
****************************************************************************************************************
Dieser Thread wurde mangels weiterer Beteiligung des Fragestellenden ohne bestätigte Lösung abgeschlossen.
Neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.
****************************************************************************************************************Robert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.