Je reçois confus quant à ce qui est la différence entre le compilateur et les fichiers de liaison PDB
respectivement (par exemple dans Visual Studio, Project Properties > C/C++ > Output Files > Program Database File Name
vsProject Properties > Linker > Debugging
). J'ai essayé de trouver la réponse en ligne et jusqu'ici je sais (peut-être tort) qu'un fichier PDB
par le compilateur est généré pour les fichiers obj
tandis que le fichier PDB
par l'éditeur de liens est généré pour le binaire (exe ou dll) et est le un utilisé pour le débogage.compilateur fichier PDB et le fichier Linker APB
Si ce n'est pas vrai, veuillez expliquer la différence. Que faire quand je crée un DLL
où j'ai l'option pour sélectionner le fichier de sortie PDB
pour le compilateur ainsi que l'éditeur de liens et quoi faire quand je crée un fichier LIB où seul le compilateur génère les fichiers PDB
car il n'y a pas de liaison effectuée.
Contexte: Les bibliothèques/dll sont utilisés par plusieurs projets, qui doivent ensuite les
PDB
fichiers pour le débogage. Dans le cas d'un fichierlib
, il n'y a aucune ambiguïté car il n'y a qu'un seul fichierPDB
généré. Mais dans le cas d'unDLL
cependant, ai-je besoin des deux fichiersPDB
pour déboguer correctement ou juste celui généré par l'éditeur de liens?
(publié ce billet avant votre mise à jour, mais il en va de la mise à jour aussi) Alors, quand je crée le fichier 'lib' (qui est une bibliothèque statique), et seul le compilateur peut générer le' pdb 'fichier puisque le lieur n'est plus nécessaire, cela signifie-t-il que maintenant le fichier' pdb' généré par le compilateur est celui nécessaire au débogage? – Samaursa
Les fichiers .lib ne sont pas impliqués dans l'exécution ou le débogage d'un programme. Ils ne sont que des entrées pour l'éditeur de liens. Le 'stuff' approprié dans un fichier lib est fait partie du binaire (dans le cas d'une bibliothèque statique) ou est utilisé pour créer des liens dynamiques vers des DLL (dans le cas d'une bibliothèque d'importation). Dans l'un de ces cas, le fichier .pdb dont vous avez besoin pour le débogage est celui produit par l'éditeur de liens lorsque le fichier .exe ou .dll réel est produit. –
Génial, merci d'avoir élaboré Michael, je vais aller de l'avant et vérifier cela comme la bonne réponse. Bien que nous soyons sur le sujet, si vous pouvez répondre à cela. Havok SDK est lié statiquement, et toutes ses bibliothèques viennent avec leurs fichiers respectifs 'PDB'. Ce qui est intéressant, c'est que si vous liez les bibliothèques sans les fichiers 'PDB' qui les accompagnent dans le même répertoire, Visual Studio donne une tonne d'avertissements que' Info de débogage est manquante, compilant comme si aucune information de débogage n'était fournie '(je suis paraphrasant) – Samaursa