Файл компилятора PDB и файл компоновщика PDB - PullRequest
13 голосов
/ 26 сентября 2010

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

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

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

1 Ответ

12 голосов
/ 26 сентября 2010

Честно говоря, я не знаю, для чего именно используется файл .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 должен совпадать.

...