Les symboles sont utiles pour le débogage et d’autres outils de diagnostic. Le contenu des fichiers de symboles varie selon les langages, les compilateurs et les plateformes. Pour dire les choses simplement, les symboles représentent un mappage entre le code source et le code binaire produit par le compilateur. Ces mappages sont utilisés par des outils tels que Visual Studio et Visual Studio Code pour résoudre les informations de numéro de ligne source ou les noms de variables locales.
.NET Core introduit un nouveau format de fichier de symboles (PDB) : le PDB portable. Contrairement aux fichiers PDB traditionnels, qui sont réservés à Windows, les PDB portables peuvent être créés et lus sur toutes les plateformes.
Qu'est-ce qu'un PDB ?
Un fichier PDB est un fichier auxiliaire produit par un compilateur pour fournir d’autres outils, en particulier des débogueurs, des informations sur ce qui se trouve dans le fichier exécutable principal et la façon dont il a été produit. Par exemple, un débogueur lit un PDB pour mapper la ligne foo.cs 12 à l’emplacement exécutable approprié afin de pouvoir définir un point d’arrêt. Le format PDB Windows existe depuis longtemps, et il a évolué à partir d’autres formats de symboles de débogage natifs qui étaient encore plus anciens. Il a commencé sa vie en tant que format pour les programmes natifs (C/C++). Pour la première version du .NET Framework, le format PDB Windows a été étendu pour prendre en charge .NET.
Le format PDB portable a été introduit dans .NET Core et il est utilisé par défaut pour cibler .NET. Quand vous ciblez .NET Framework, vous pouvez activer les symboles des fichiers PDB portables en spécifiant <DebugType>portable</DebugType> dans votre fichier projet. Le format PDB portable est basé sur le format de métadonnées ECMA-335. Pour plus d’informations, consultez Portable PDB v1.0 : Spécification de format. Les outils de diagnostic peuvent utiliser la bibliothèque System.Reflection.Metadata pour lire des fichiers PDB portables (pour voir un exemple, consultez System.Reflection.Metadata.Document).
Utiliser le format PDB correct pour votre scénario
Ni les fichiers PDB portables ni les fichiers PDB Windows ne sont pris en charge partout. Pour déterminer le format à utiliser, prenez en compte l’endroit où votre projet sera utilisé et débogué. Si vous avez un projet que vous souhaitez pouvoir utiliser et déboguer dans les deux formats, vous pouvez utiliser différentes configurations de build et générer le projet deux fois pour prendre en charge les deux types de consommateurs.
Prise en charge des fichiers PDB portables
Un fichier PDB portable peut être lu sur n’importe quel système d’exploitation et c’est le format de symbole recommandé pour le code managé. Cependant, il existe un certain nombre d’outils et d’applications hérités où ils ne sont pas pris en charge :
Applications ciblant .NET Framework 4.7.1 ou version antérieure : impression de traces avec des mappages vers des numéros de ligne (par exemple, dans une page d’erreur ASP.NET). Le nom des méthodes n’est pas affecté, seuls les noms de fichiers sources et les numéros de ligne ne sont pas pris en charge.
Quand vous utilisez des décompilateurs .NET comme ildasm ou .NET Reflector, vous ne verrez pas les mappages des lignes sources ni les noms des paramètres locaux.
Les dernières versions de DIA et les outils qui l’utilisent pour lire des symboles, comme WinDBG, prennent en charge les fichiers PDB portables, mais ce n’est pas le cas des versions antérieures.
Il peut y avoir des versions plus anciennes des profileurs qui ne prennent pas en charge les fichiers PDB portables.
Pour utiliser des fichiers PDF portables sur des outils qui ne les prennent pas en charge, vous pouvez utiliser Pdb2Pdb, qui convertit les fichiers PDB portables en fichiers PDB Windows et inversement.
Prise en charge des PDB Windows
Les PDB Windows ne peuvent être écrits ou lus que sur Windows. L’utilisation de PDB Windows pour le code managé est obsolète et n’est nécessaire que pour les outils hérités. Il est recommandé d’utiliser des fichiers PDB portables au lieu de fichiers PDB Windows, car certaines fonctionnalités plus récentes des compilateurs sont implémentées seulement pour les fichiers PDB portables.
Voir aussi
dotnet-symbol peut être utilisé pour télécharger des fichiers de symboles pour les fichiers binaires de l’infrastructure
La source de ce contenu se trouve sur GitHub, où vous pouvez également créer et examiner les problèmes et les demandes de tirage. Pour plus d’informations, consultez notre guide du contributeur.
Commentaires sur .NET
.NET est un projet open source. Sélectionnez un lien pour fournir des commentaires :
Découvrez comment déboguer efficacement votre application .NET en utilisant Visual Studio Code pour corriger rapidement vos bogues. Utilisez le débogueur interactif de Visual Studio Code pour analyser et corriger vos applications C#.