Ich habe einen Crash-Dump für eine Kundenanwendung, die mit einer sehr alten Version unserer DLL (Release-Build, keine Originalsymbole) erstellt wurde, die ich in WinDbg analysiert habe.Crash-Dump - WinDbg - Erzwingen PDB-Dateien zum Abgleich funktioniert nicht?
Um weitere Informationen zu erhalten, habe ich die DLL im Release-Modus mit Symbolen dieses Mal neu erstellt, mit der gleichen Compiler-Version und ich glaube, die gleichen Einstellungen wie wenn die DLL ursprünglich erstellt wurde. Ich habe die Symboldatei zu meinem Symbolpfad hinzugefügt, aber die WinDbg-Erweiterung! Itoldyouso teilt mir mit, dass das Modul im Dump nicht mit der PDB-Datei übereinstimmt. Die Aktivierung von SYMOPT_LOAD_ANYTHING hilft ebenfalls nicht.
! Itoldyouso sagt mir, dass sie nicht übereinstimmen, weil das Modul kein pdb sig (Wert 0) hat, im Gegensatz zu der neu erstellten Symboldatei, die ich gemacht habe (mit einem gültigen pdb sig). Wie bekomme ich sie zusammen?
Ja, es lädt die Symbole von foo, aber in der ausführlichen Ausgabe sehe ich die fehlende Übereinstimmung auch gemeldet: "DBGENG: foo.dll hat nicht übereinstimmende Symbole - geben Sie" .hh dbgerr003 " für Details " – JosephA
Natürlich werden sie als nicht übereinstimmend gemeldet, da sie nicht erstellt wurden, als die DLL erstellt wurde. Aber solange Sie den gleichen Compiler und die gleiche Einstellung verwenden (was Sie erwähnt haben) UND der Quellcode sich überhaupt nicht geändert hat, sollten die Symbole funktionieren. –
Ich nehme an, ich ging von der Annahme aus, wenn ich keine Übereinstimmung habe, kann ich dem Callstack einfach nicht vertrauen, obwohl Sie vielleicht, wie Sie sagten, niemals passen werden, aber vielleicht kann ich trotzdem einen meist gültigen Callstack haben. – JosephA