Файл PDB компилятора и файл PDB Linker

Я смущаюсь относительно того, какая разница между файлами-компиляторами и компоновщиками PDB соответственно (т.е. в Visual Studio, Project Properties > C/C++ > Output Files > Program Database File Name vs Project Properties > Linker > Debugging). Я попытался найти ответ в сети и до сих пор знаю (может быть, неправильно), что файл PDB компилятором генерируется для файлов obj, а файл PDB компоновщиком создается для двоичного (exe или dll) и используется для отладки.

Если это неверно, объясните разницу. В любом случае, что делать, когда я создаю DLL, где у меня есть возможность выбрать выходной файл PDB для компилятора, а также компоновщик и что делать, когда я создаю файл LIB, где только компилятор генерирует файлы PDB, поскольку не выполняется никакого связывания.

Фон: Библиотеки /DLL используются несколькими проектами, которые затем нуждаются в файлах PDB для отладки. В случае файла lib нет никакой двусмысленности, поскольку создается только один PDB файл. Но в случае DLL, однако, нужны ли мне файлы PDB для правильной отладки или только тот, который сгенерирован компоновщиком?

Ответы

Ответ 1

Я, честно говоря, не знаю, что именно используется файл .pdb, сгенерированный на этапе компиляции, - я предполагаю, что он представляет собой некоторую промежуточную информацию, которую он получает в финальный файл .pdb компоновщиком.

Тем не менее, нижняя строка заключается в том, что для целей отладки все, что вам нужно, это файл .pdb, созданный компоновщиком.


Обновление: Немного копать это от http://blogs.msdn.com/b/yash/archive/2007/10/12/pdb-files-what-are-they-and-how-to-generate-them.aspx:

Каковы два типа файлов .PDB?

==============================

Существует два типа файлов PDB. Один генерируемый компилятором, названным как VCx0.PDB(например, vc80.pdb), а другой .PDB.

Файл VCx0.PDB генерируется компилятор, и он связан с .OBJ файл. Он содержит информацию о типе только.

Файлы .PDB генерируемый компоновщиком, и это связанных с целевым исполняемым файлом или DLL. Этот файл содержит полная отладочная информация. Когда мы отладки, нам нужен этот .pdb файл для выравнивания с символами. временную метку целевого файла и PDB должен соответствовать.