2013-06-11 29 views
13

Podczas tworzenia biblioteki statycznej (.LIB) w MS Visual Studio 10 z informacjami debugowania, , .PDB ma zawsze nazwę vc100.pdb.
(w przeciwieństwie do budowania .DLL, gdzie informacji debugowania jest [MyProjectName].pdb)Pliki PDB z bibliotekami w Visual Studio 10

Jest to problem dla mnie, bo staram się kopiować kilka różnych bibliotek (i ich symbole debugowania) do katalogu "PublishedLibraries", ale wszystkie nazwy są oczywiście zderzające się.

Jestem pewien, że mogę zmienić nazwy każdej .PDB aby dopasować jego .LIB, ale dla mnie tym większy pytanie dlaczego ma Visual Studio myśleć vc100.pdb jest lepsza nazwa niż projectA.pdb ??
W jaki sposób zamierzamy pracować z Debug Info z wielu bibliotek, jeśli wszystkie nazwy są sprzeczne?

+1

err, jak debugować plik .lib bezpośrednio? IMO, jeśli skompilujesz go do biblioteki DLL lub exe .pdb, będzie to wymagało debugowania. –

+1

Jeśli zbuduję kilka bibliotek (i trochę innych kodów) w pliku wykonywalnym, czy ten plik wykonywalny nie potrzebuje informacji z różnych plików 'vc100.pdb'? Jak odczytuje je wszystkie, jeśli wszystkie mają takie samo sprzeczne imię? – abelenky

+1

Jest to "baza danych programu", zawiera informacje o zależnościach. Pozostaw to, gdzie zostało wygenerowane. Niezbędny PDB nie zostanie wygenerowany, dopóki nie połączysz biblioteki statycznej z plikiem wykonywalnym. –

Odpowiedz

19

Jeśli używasz/Z7 (zamiast/ZI lub/Zi) [w interfejsie użytkownika C/C++ -> Ogólne -> Format informacji debugowania] to informacje debugowania są osadzone w samym pliku lib zamiast oddzielnego pdb, co oznacza, że ​​nie musisz martwić się o tę samą nazwę.

Kiedy budujesz swój ostatni plik wykonywalny (.exe lub .dll), otrzymasz scalony plik pdb ze wszystkich małych osadzonych plików pdbs.

zobaczyć this question uzyskać więcej informacji

Jego droga Zawsze udało ten problem w moim zespole, ponieważ nie można utracić informacje debugowania podczas kompilacji. To trochę rozrasta się w bibliotekach [ale nie więcej w sumie niż w przypadku lib i pdb], ale ponieważ prawdopodobnie nie wysyłasz bibliotek, nie powinieneś się o to martwić.