Я путаюсь, как к тому, что разница между компилятором и компоновщиком PDB
FILES соответственно (т.е. в Visual Studio, Project Properties > C/C++ > Output Files > Program Database File Name
противProject Properties > Linker > Debugging
). Я попытался найти ответ онлайн, и до сих пор знаю (может быть, неправильно), что файл PDB
компилятором генерируется для файлов obj
, а файл PDB
компоновщиком создается для двоичного (exe или dll) и является один используется для отладки.Компилятор PDB файла и компоновщик PDB файл
Если это неправда, объясните разницу. В любом случае, что делать, когда я создаю DLL
, где у меня есть возможность выбрать файл PDB
для компилятора, а также компоновщик и что делать, когда я создаю файл LIB, где только компилятор генерирует файлы PDB
так как не выполняется никакого связывания.
Справочная информация: библиотеки/DLLs используются несколько проектов, которые затем нуждаются в
PDB
файлы для отладки. В случае файлаlib
нет двусмысленности, так как существует только один файлPDB
. Но в случае сDLL
, однако, мне нужны файлыPDB
для правильной отладки или только тот, который сгенерирован компоновщиком?
(Опубликовано это до вашего обновления, но это относится к обновлению, а) Так что, когда я создаю 'lib' файл (то есть статическая библиотека), и только компилятор может генерировать' PDB 'file, поскольку компоновщик больше не нужен, значит ли это, что теперь файл' pdb', сгенерированный компилятором, является тем, который необходим для отладки? – Samaursa
.lib-файлы не участвуют в выполнении или отладке программы. Это всего лишь вход для компоновщика. Соответствующий «материал» в файле lib либо делается частью двоичного файла (в случае статической библиотеки), либо используется для создания динамических ссылок на библиотеки DLL (в случае библиотеки импорта). В любом из этих случаев файл .pdb, который вам нужен для отладки, является тем, который создается компоновщиком при создании фактического файла .exe или .dll. –
Отлично, спасибо за разработку Майкла, я продолжу и проверю это как правильный ответ. Хотя, поскольку мы на этот вопрос, если вы можете ответить на это. Havok SDK статически связан, и все его библиотеки поставляются с соответствующими файлами 'PDB'. Интересный бит заключается в том, что если вы связываете библиотеки с файлами 'PDB', сопровождающими их в том же каталоге, то Visual Studio дает массу предупреждений о том, что' Debug info отсутствует, компиляция, как будто информация об отладке не предоставляется' (я перефразируя) – Samaursa