Die Dokumentation sagt:
Wenn Sie die Zeichenfolge srv * in Ihren Symbolpfad einschließen, verwendet der Debugger ein Symbolserver, um Symbole aus dem Standard-Symbolspeicher zu erhalten. Zum Beispiel: Der folgende Befehl weist den Debugger an, ein Symbol zu verwenden Server, um Symbole aus dem Standard-Symbolspeicher zu erhalten. Diese Symbole sind nicht auf dem lokalen Computer zwischengespeichert .
.sympath srv *
Was ich jedoch gefunden habe, sind die Symbole sind zwischengespeichert.
Ich verwende WinDbg 10 und die Standard-Cache-Dateien scheinen bei C:\Program Files (x86)\Windows Kits\Debuggers\x86\sym
erstellt zu werden. Wenn ich sie lösche und eine ausführbare Datei mit dem Pfad srv*
starte, werden die Symbole hier heruntergeladen.
Also ist die Dokumentation falsch?
Ja, die Dokumentation ist falsch (zumindest für WinDbg 6.2.9200.16384).
Sie können es beweisen, indem Sie den erwähnten Befehl eingeben:
%Vor% Also, wie wir aus der Ausgabe von WinDbg sehen können, enthält der erweiterte Symbolpfad (der tatsächlich verwendet wird) cache*
, was anzeigt, dass Symbole zwischengespeichert werden.
Sie haben dies in der Dokumentation für WinDbg , die möglicherweise nicht der richtige Ort zum Definieren des Verhaltens ist, da WinDbg die Symbole nicht selbst lädt. Stattdessen verwendet es die dbghelp.dll und die Das Verhalten dieser DLL kann sich ändern, ohne dass die WinDbg-Hilfe aktualisiert wird.
Die Syntax des Symbolpfads ist wirklich schwer zu verstehen und die Dokumentation ist überall verteilt. All die Magie mit Erweiterungs- und Standardverzeichnissen macht es noch schlimmer.
Der Fluss ist mehr oder weniger:
!homedir
.) Wenn Sie das spezielle cache*path
-Token srv*localpath*serverpath
in Cache-Symbole von serverpath
in localpath
zu schreiben. Wenn Sie kein Caching durchführen möchten, stellen Sie sicher, dass Ihr .sympath
es nicht enthält.
Es kann sich auch lohnen, zu überprüfen, ob die Symbole effektiv zwischengespeichert (einmal abgerufen, mehrfach verwendet) oder nur für diesen WinDbg-Lauf gespeichert wurden (einmal pro Sitzung abgerufen).