Файл 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 должен соответствовать.