2016-08-08 16 views
1

Wenn ich eine Dump-Datei in WinDbg öffnen, sieht es für PDB-Dateien in c:\code\appV1 OrdnerWarum sucht windbg verschiedene Pfade für Dump und EXE-Datei?

Wenn ich die exe-Datei direkt in WinDbg öffnen, für die PDB-Dateien in c:\code\appV2 Ordner aussieht.

Dies wird mich verrückt, weil in beiden Fällen wird windbg die gleiche exe debuggen, die auf c: \ MyApp \ app.exe

Der c:code\appV1 Sinn in suchen, ist dieser Pfad, in dem PDB-Dateien waren generiert von der exe, aber warum sucht es in c:\code\appV2, die überhaupt keine Verbindung mit der Dump-Datei oder der exe hat?

+0

Dies kann nicht beantwortet werden, ohne zu wissen, was Sie als '.Sympath' festgelegt haben und ohne zu wissen, woher die DLL geladen wurde. Vielleicht ist die DLL an diesem Ort registriert? Beim Debuggen ist es notwendig, genau zu sein und sich Details anzusehen. Vermutlich vermissen Sie ein kleines Detail und Sie liefern uns noch weniger Details, damit wir es lösen können. –

+0

@ThomasWeller verständlich, aber ich setze nichts mit '.Sympath'. Die '.reload' Debug-Ausgabe sagt mir nicht einmal, dass sie beide Pfade durchsucht und ich muss in den Prozessmonitor einsteigen und war überrascht, wo sie in jedem Fall gesucht hat. Prozessmonitor-Ausgabe ist das einzige, was ich die Ergebnisse zeigen muss, und das ist visuelles Fenster. – zar

+1

@zar Sie können! Sym noisy verwenden, um Probleme beim Laden von Symbolen zu beheben, einschließlich gesuchter Pfade. – Dono

Antwort

0

Ich habe umfangreiche Ausgrabungen gemacht, ein Demo-Projekt erstellt und Crash simuliert und verschiedene Kombinationen ausprobiert. Die Antwort ist, dass die Dump-Datei bei Standard-Suchpfaden (pdb) eine übergeordnete Wirkung auf die ausführbare Datei zu haben scheint.

Hier ist, wie Sie dieses Szenario zu reproduzieren:

  1. Projekt erstellen namens App1 zu sagen c: \ code \ App1 und es bauen.
  2. Kopieren Sie die oben Projekt und den Hauptordner als App1Clone umbenennen und bauen es, sagen wir in c: \ code \ App1Clone

Kopieren Sie nun App1 zuerst c zu sagen: \ Testordner und führen Sie es. Es wird abstürzen und eine Dump-Datei erstellen.

Kopieren Sie jetzt die App1 aus dem Ordner App1Clone in den Ordner c: \ test und führen Sie sie aus. Es wird abstürzen und eine Dump-Datei erstellen.

Jetzt sind beide Speicherauszugsdateien mit c: \ test \ app1.exe verknüpft, aber wenn die falsche app1.exe vorhanden war (= Suchpfade stimmen nicht überein), werden anscheinend die Pfade ausgewählt, die angeblich in der Speicherauszugsdatei gespeichert sind. Ich weiß nicht, ob Dump-Dateien diesen Pfad sogar speichern, aber dies scheint auf der Grundlage meiner Experimente der Fall zu sein.