2010-09-07 9 views
13

Ich habe einen Windows-Minidump (C-Code) und eine entsprechende EXE-Datei. Leider habe ich nicht die exakt passenden .pdb-Dateien, aber ich habe .pdbs, die genau den gleichen Code enthalten, der gerade zu einem anderen Zeitpunkt erstellt wurde. In Windbg kann ich verwenden:Ist es möglich, nicht übereinstimmende Symbole in Visual Studio zu laden?

Um es zu sagen, laden Sie nichts, auch nicht übereinstimmende Symboldateien. Das funktioniert in diesem speziellen Fall sehr gut und ich kann einen richtigen Anruf-Stack bekommen. Ich bin nur neugierig, ob Visual Studio eine solche Funktion hat oder nicht. Wir verwenden so ziemlich jede Version von VS, also spielt es keine Rolle, in welcher Version es sich befindet. Danke.

+0

Dies beantwortet Ihre Frage nicht wirklich, aber Sie würden sich selbst einen großen Gefallen tun, indem Sie eine einheitliche Reihe von Entwicklungswerkzeugen standardisieren. –

+1

Wir haben ein konsistentes Set. Es ist nur so, dass wir alte Versionen unserer Software unterstützen und es wurde nicht als riskant erachtet, die alten Versionen der Software auf die neueren Versionen von Visual Studio zu portieren. – Morinar

Antwort

4

Es gibt keine Überschreibung, aber das Plakat zu this question einen Weg gefunden, um die PDB-Dateien zu ändern, um sie die EXE machen lassen.

Dank einer der Kommentare auf der erste Antwort, überprüfte ich die PDF-Dateien des Buches „Undocumented Windows 2000 Secrets: Ein Programmierer Kochbuch“ einen Link zu aus. Und der Autor geht in große Details über die pdb-Datei Format. Wie ich bereits sagte, hatte ich bereits geladen die pdb in einen Hex Editor und drehte einige Bits um erscheinen, dass ich die Alter/Unterschrift übereinstimmen, aber es nicht Arbeit. Nun, nach der Verwendung des Dienstprogramms aus dem W2k Geheimnisse Buch zu "explodieren" die pdb in die enthaltenen Streams, I festgestellt, dass sie eine andere Verweis auf das Alter in Stream 3 verstecken !!!!!!! Sobald ich das als gut umgedreht hatte, passte es in windbg zusammen.

Nicht sicher, ob Sie zu so viel Mühe gehen wollen, aber es sieht so aus, als könnte es gemacht werden. Wenn dies für Produktionsunterstützung ist, könnte es sich lohnen.

+0

Ich habe dieses Problem gelöst, aber ich möchte eine Antwort akzeptieren, da meine Antwortquote unter 100% liegt ;-) Dieser scheint die hilfreichsten Informationen zu haben, also akzeptiere ich ihn. – Morinar

0

Nach this post ist es möglich, sos windbg Befehle auch im Visual Studio zu verwenden. Aber ich bin nicht sicher, ob ".symopt" auch in diese Kategorie fällt.

18

Versuchen this utility:

ChkMatch Dienstprogramm verwendet werden kann, ob eine ausführbare Datei und Debug-Informationsdatei Übereinstimmung zu überprüfen. Es kann auch verwendet werden, um die Übereinstimmung zwischen einer ausführbaren Datei und einer Debug-Informationsdatei zu erzwingen, wenn diese kompatibel sind.

Weitere Informationen zum Abgleich von Debuginformationen und verwandten Problemen finden Sie unter article.

Unterstützten Debug-Informationen Formate: DBG, PDB 2.0, PDB 7.0 ...

+1

Dies sollte die akzeptierte Antwort sein. –

+1

Dies sollte unbedingt die akzeptierte Antwort sein. – SashaZh

+0

Ich zweitens, das ist die Lösung. –

3

Visual Studio und Windbg passen pdbs an, indem sie die Zeitstempel im Executable-Header mit dem Zeitstempel in der pdb-Datei vergleichen. Sie können den Zeitstempel anzeigen, indem Sie dumpin/headers ausführen.

Ich habe chkmchat nicht verwendet, aber die exe oder pdb zu modifizieren, sollte gut funktionieren.

Beachten Sie, dass diese Technik möglicherweise nicht ausreicht, um Ihre Binärdatei zu debuggen.John Robbins erwähnt in seinem Buch "Debugging Windows" (das ich empfehlen kann), dass er verschiedene Build-Ergebnisse aus dem identischen Quellbaum gesehen hat, der zu fast identischen Zeiten gebaut wurde.

Erstellen Sie immer pdb-Symbole mit Ihren Builds (einschließlich Releasebuilds) und archivieren Sie diese neben den Build-Produkten und fügen Sie die .map-Datei für ein gutes Maß hinzu.

Verwandte Themen