Partager via


/Yd (Placer les informations de débogage dans un fichier objet)

Paces termine les informations de débogage dans tous les fichiers objet créés à partir d’un fichier d’en-tête précompilé (.pch) lorsqu’il est utilisé avec les options /Yc et /Z7 . Action déconseillée.

Syntaxe

/Yd

Notes

/Yd est déconseillé ; Visual C++ prend désormais en charge l’écriture de plusieurs objets dans un seul fichier .pdb, utilisez /Zi à la place. Pour obtenir la liste des options de compilateur déconseillées, consultez Options de compilateur déconseillées et supprimées dans les options du compilateur répertoriées par catégorie.

Sauf si vous devez distribuer une bibliothèque contenant des informations de débogage, utilisez l’option /Zi plutôt que /Z7 et /Yd.

Le stockage des informations de débogage complètes dans chaque fichier .obj est nécessaire uniquement pour distribuer des bibliothèques qui contiennent des informations de débogage. Il ralentit la compilation et nécessite un espace disque considérable. Lorsque /Yc et /Z7 sont utilisés sans /Yd, le compilateur stocke les informations de débogage courantes dans le premier fichier .obj créé à partir du fichier .pch. Le compilateur n’insère pas ces informations dans les fichiers .obj créés par la suite à partir du fichier .pch ; il insère des références croisées aux informations. Quel que soit le nombre de fichiers .obj qui utilisent le fichier .pch, un seul fichier .obj contient les informations de débogage courantes.

Bien que ce comportement par défaut entraîne des temps de génération plus rapides et réduit les demandes d’espace disque, il est indésirable si une petite modification nécessite la reconstruction du fichier .obj contenant les informations de débogage courantes. Dans ce cas, le compilateur doit reconstruire tous les fichiers .obj contenant des références croisées au fichier .obj d’origine. En outre, si un fichier .pch commun est utilisé par différents projets, la dépendance à des références croisées à un seul fichier .obj est difficile.

Pour plus d’informations sur les en-têtes précompilés, consultez :

Pour définir cette option du compilateur dans l'environnement de développement Visual Studio

  1. Ouvrez la boîte de dialogue Pages de propriété du projet. Pour plus d’informations, consultez Définir le compilateur C++ et les propriétés de build dans Visual Studio.

  2. Sélectionnez la page de propriétés Propriétés de configuration>C/C++>Ligne de commande.

  3. Entrez l’option du compilateur dans la zone Options supplémentaires.

Pour définir cette option du compilateur par programmation

Exemples

Supposons que vous avez deux fichiers de base, F.cpp et G.cpp, chacun contenant ces instructions #include :

#include "windows.h"
#include "etc.h"

La commande suivante crée le fichier d’en-tête précompilé ETC.pch et le fichier objet F.obj :

CL /YcETC.H /Z7 F.CPP

Le fichier objet F.obj inclut des informations de type et de symbole pour WINDOWS.h et ETC.h (et tous les autres fichiers d’en-tête qu’ils incluent). Vous pouvez maintenant utiliser l’en-tête précompilé ETC.pch pour compiler le fichier source G.cpp :

CL /YuETC.H /Z7 G.CPP

Le fichier objet G.obj n’inclut pas les informations de débogage de l’en-tête précompilé, mais fait simplement référence à ces informations dans le fichier F.obj. Notez que vous devez établir un lien avec le fichier F.obj.

Si votre en-tête précompilé n’a pas été compilé avec /Z7, vous pouvez toujours l’utiliser dans les compilations ultérieures à l’aide de /Z7. Toutefois, les informations de débogage sont placées dans le fichier objet actuel et les symboles locaux pour les fonctions et les types définis dans l’en-tête précompilé ne sont pas disponibles pour le débogueur.

Voir aussi

Options du compilateur MSVC
Syntaxe de la ligne de commande du compilateur MSVC