2013-06-11 4 views
13

Beim Erstellen einer statischen Bibliothek (.LIB) in MS Visual Studio 10 mit Debuginformationen wird die .PDB immer vc100.pdb benannt.
(im Gegensatz zu einem .DLL Gebäude, in dem die Debug-Informationen sind [MyProjectName].pdb)PDB-Dateien mit Bibliotheken in Visual Studio 10

Dies ist ein Problem für mich, weil ich versuche, mehrere verschiedene Bibliotheken zu kopieren (und ihre Debug-Symbole) in ein Verzeichnis von "PublishedLibraries", aber alle vc100.pdb Namen kollidieren offensichtlich.

Ich bin sicher, dass ich die Namen der einzelnen .PDB ändern kann seine .LIB passen, aber für mich die größere Frage ist, warum ist Visual Studio denken vc100.pdb ist ein besserer Name als projectA.pdb ??
Wie sollen wir mit Debug Info aus mehreren Bibliotheken arbeiten, wenn alle Namen in Konflikt stehen?

+1

err, wie debuggen Sie eine .lib direkt? IMO, wenn Sie es in eine DLL oder exe .pdb dafür bauen, wird alles haben, das benötigt wird, um zu debuggen. –

+1

Wenn ich mehrere Bibliotheken (und etwas anderen Code) in eine ausführbare Datei baue, benötigt diese ausführbare Datei nicht Informationen aus den verschiedenen 'vc100.pdb' Dateien? Wie liest es sie alle, wenn sie alle den gleichen widersprüchlichen Namen haben? – abelenky

+1

Es ist die "Programmdatenbank", es enthält Abhängigkeitsinformationen. Belassen Sie es dort, wo es generiert wurde. Die benötigte PDB wird erst generiert, wenn Sie die statische Bibliothek in eine ausführbare Datei einbinden. –

Antwort

19

Wenn Sie/Z7 (anstelle von/ZI oder/Zi) [in der UI C/C++ -> Allgemein -> Debug Information Format] verwenden, wird die Debug-Informationen in die Lib-Datei selbst eingebettet, anstatt eine separate pdb, was bedeutet, dass Sie sich nicht um den gleichen Namen kümmern müssen.

Wenn Sie Ihre endgültige ausführbare Datei (.exe oder .dll) erstellen, erhalten Sie eine zusammengeführte pdb von allen kleinen eingebetteten pdbs.

siehe this question für weitere Informationen

Es ist die Art, wie ich immer dieses Problem in meinem Team haben es geschafft, da Sie nicht die Debug-Informationen während des Build-Prozesses verlieren. Es bläst die libs etwas auf [aber nicht mehr als lib und pdb], aber da du wahrscheinlich keine libs schickst, solltest du dir darüber nicht viel Sorgen machen.