2013-06-11 3 views
13

При создании статической библиотеки (.LIB) в MS Visual Studio 10 с отладочной информацией .PDB всегда называется vc100.pdb.
(в отличие от строительства .DLL, где отладочная информация [MyProjectName].pdb)PDB-файлы с библиотеками в Visual Studio 10

Это проблема для меня, потому что я пытаюсь скопировать несколько различных библиотек (и их символы отладки) в директорию "PublishedLibraries", но все имена vc100.pdb явно сталкиваются.

Я уверен, что я могу изменить имена каждого .PDB, чтобы соответствовать его .LIB, но для меня большой вопрос является почему делает Visual Studio думаю vc100.pdb это лучшее название, чем projectA.pdb ??
Как мы планируем работать с Debug Info из нескольких библиотек, если все имена конфликтуют?

+1

err, как вы отлаживаете .lib напрямую? IMO, если вы создадите его в DLL или exe .pdb, для этого будет все, что нужно для отладки. –

+1

Если я создаю несколько библиотек (и некоторый другой код) в исполняемый файл, разве эта исполняемая информация не нужна из различных файлов 'vc100.pdb'? Как они читают их все, если все они имеют одно и то же противоречивое имя? – abelenky

+1

Это «база данных программ», она содержит информацию о зависимости. Оставьте его там, где он был сгенерирован. Необходимый PDB не генерируется, пока вы не свяжете статическую библиотеку с исполняемым файлом. –

ответ

19

Если вы используете/Z7 (вместо/ZI или/Zi) [в UI C/C++ -> General -> Debug Information Format], тогда отладочная информация встроена в сам файл lib, а не отдельный pdb, что означает, что вам не нужно беспокоиться об одном и том же имени.

Когда вы создаете свой окончательный исполняемый файл (.exe или .dll), вы получите объединенный pdb из всего небольшого встроенного pdbs.

см this question для получения дополнительной информации

Свой путь я всегда умудрялся этот вопрос в моей команде, так как вы не можете потерять информацию отладки в процессе сборки. Это несколько раздувает libs [но не более, чем с lib и pdb], но поскольку вы, вероятно, не отправляете libs, вам не стоит беспокоиться об этом.