Ist es möglich, nicht übereinstimmende Symbole in Visual Studio zu laden?

Lesezeit: 4 Minuten

Benutzer-Avatar
Morinar

Ich habe einen Windows-Minidump (C-Code) und eine entsprechende Exe-Datei. Leider habe ich nicht die genau passenden .pdb-Dateien, aber ich habe .pdbs, die genau denselben Code enthalten, der nur zu einem anderen Zeitpunkt erstellt wurde. In Windbg kann ich verwenden:

.symopt+0x40

Um es anzuweisen, alles zu laden, sogar nicht übereinstimmende Symboldateien. Dies funktioniert in diesem speziellen Fall hervorragend, und ich kann eine ordnungsgemäße Aufrufliste abrufen. Ich bin nur neugierig, ob Visual Studio eine solche Funktion hat oder nicht. Wir verwenden hier so ziemlich jede andere Version von VS, also spielt es keine Rolle, in welcher Version es sich befindet. Danke.

  • Dies beantwortet Ihre Frage nicht wirklich, aber Sie würden sich selbst einen großen Gefallen tun, wenn Sie auf einen konsistenten Satz von Entwicklungstools standardisieren würden.

    – 3Dave

    7. September 2010 um 16:18 Uhr

  • Wir haben ein einheitliches Set. Es ist nur so, dass wir alte Versionen unserer Software unterstützen und es das Risiko nicht wert war, die alten Versionen der Software auf die neueren Versionen von Visual Studio zu portieren.

    – Morinar

    7. September 2010 um 16:42 Uhr

Benutzer-Avatar
Sanketh I

Versuchen dieses Dienstprogramm:

Das Dienstprogramm ChkMatch kann verwendet werden, um zu prüfen, ob eine ausführbare Datei und eine Debug-Informationsdatei übereinstimmen. Es kann auch verwendet werden, um den Abgleich zwischen einer ausführbaren Datei und einer Debug-Informationsdatei zu erzwingen, wenn sie kompatibel sind.

Weitere Informationen zum Abgleich von Debuginformationen und verwandten Problemen finden Sie hier Artikel.

Unterstützte Debug-Informationsformate: DBG, PDB 2.0, PDB 7.0…

  • Der gesamte Befehl sieht wie folgt aus: chkmatch -m C:\Temp\myLib.dll C:\Temp\myLib.pdb

    – honzajscz

    24. September 2021 um 15:08 Uhr

  • Alle Links in dieser Antwort sind tot

    – Guillaume Gris

    17. November 2021 um 12:17 Uhr

  • Sie können das Dienstprogramm hier finden: web.archive.org/web/20210205095232/https://www.debuginfo.com/…

    – Vardit

    5. Juli um 19:45 Uhr

Benutzer-Avatar
Steve Townsend

Es gibt keine Überschreibung, aber das Poster zu dieser Frage hat einen Weg gefunden, die PDB-Dateien so zu ändern, dass sie mit der EXE übereinstimmen.

Dank eines der Kommentare zur ersten Antwort habe ich einen Link zu den PDF-Dateien des Buches „Undocumented Windows 2000 Secrets: A Programmers Cookbook“ ausgecheckt. Und der Autor geht sehr detailliert auf das pdb-Dateiformat ein. Wie ich bereits sagte, hatte ich die PDB bereits in einen Hex-Editor geladen und einige Teile umgedreht, die den Anschein erweckten, dass ich die Alters- / Signaturübereinstimmung vorgenommen hatte, aber es funktionierte nicht. Nun, nachdem ich das Dienstprogramm aus dem W2k-Secrets-Buch verwendet hatte, um die PDB in die enthaltenen Streams zu “explodieren”, fand ich heraus, dass sie einen weiteren Hinweis auf das Alter in Stream 3 verstecken !!!!!! Als ich auch diesen umdrehte, stimmte er mit windbg überein.

Ich bin mir nicht sicher, ob Sie sich so viel Mühe machen wollen, aber es sieht so aus, als wäre es machbar. Wenn dies für die Produktionsunterstützung ist, könnte es sich für Sie lohnen.

  • Am Ende habe ich dieses Problem umgangen, möchte aber eine Antwort akzeptieren, da ich nicht möchte, dass meine Antwortrate unter 100 % liegt 😉 Diese hier scheint die hilfreichsten Informationen zu enthalten, also akzeptiere ich sie.

    – Morinar

    22. Dezember 2010 um 19:50 Uhr

Visual Studio und Windbg gleichen pdbs ab, indem sie die Zeitstempel im ausführbaren Header mit den in der pdb-Datei gespeicherten Zeitstempeln vergleichen. Sie können den Zeitstempel anzeigen, indem Sie dumpin /headers ausführen.

Ich habe chkmatch nicht verwendet, aber das Ändern von exe oder pdb, damit sie zueinander passen, 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 unterschiedliche Build-Ergebnisse aus dem identischen Quellbaum gesehen hat, der zu fast identischen Zeiten erstellt wurde.

Erstellen Sie immer PDB-Symbole mit Ihren Builds (einschließlich Release-Builds) und archivieren Sie sie zusammen mit den Build-Produkten und fügen Sie die .map-Datei für eine gute Maßnahme hinzu.

Benutzer-Avatar
ROTER WEICHER ADAIR

Laut diesem Beitrag ist es möglich, sos windbg-Befehle auch in Visual Studio zu verwenden. Aber ich bin mir nicht sicher, ob “.symopt” auch in diese Kategorie fällt.

Mir wurde gesagt, dass sie in VS2019 (16.7 .. 16.8 Baseballstadion) auf einen PDB-Dateigenerator mit mehreren Threads umgestellt haben, um dies zu beschleunigen.

Ein Nebeneffekt ist, dass Abschnitte der Datei, die in verschiedenen Threads generiert werden, möglicherweise in einer anderen Reihenfolge in der Datei landen.

Unterm Strich ist es noch wichtiger als zuvor, dass Sie die PDB verwenden, die mit der EXE erstellt wurde, und keine andere.

1120860cookie-checkIst es möglich, nicht übereinstimmende Symbole in Visual Studio zu laden?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy