Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le chemin d’accès aux symboles spécifie les emplacements où les débogueurs Windows tels que WinDbg, KD, CDB et NTST recherchent des fichiers de symboles.
Démarrage rapide : Utilisez la .symfix commande pour configurer un chemin d’accès par défaut au serveur de symboles publics de Microsoft. Cela fonctionne bien dans la plupart des scénarios de débogage.
Configurez correctement le chemin d’accès des symboles pour permettre un débogage efficace : les débogueurs peuvent ensuite localiser et charger automatiquement les fichiers de symboles nécessaires pour analyser l’exécution du code. Ce guide vous montre comment configurer des chemins de symboles, utiliser le serveur de symboles de Microsoft, les symboles de cache localement et résoudre les problèmes courants. Pour plus d’informations sur les symboles et les fichiers de symboles, consultez Symboles.
Certains compilateurs, y compris Microsoft Visual Studio, mettent des fichiers de symboles dans le même répertoire que les fichiers binaires. Les fichiers de symboles et les fichiers binaires vérifiés contiennent des informations de chemin d’accès et de nom de fichier, ce qui permet au débogueur de rechercher automatiquement les fichiers de symboles. Si vous déboguez un processus en mode utilisateur sur l’ordinateur sur lequel vous avez créé l’exécutable et si les fichiers de symboles se trouvent à leur emplacement d’origine, le débogueur peut localiser les fichiers de symboles sans définir le chemin d’accès aux symboles.
Dans la plupart des autres cas, vous devez définir le chemin des symboles pour pointer vers vos emplacements de fichiers de symboles.
Conseil / Astuce
Utilisez .symfix pour définir un chemin d’accès par défaut au serveur de symboles publics Microsoft public public qui fonctionne bien dans de nombreuses situations.
Syntaxe du chemin d’accès aux symboles
Le chemin de symbole du débogueur est une chaîne qui se compose de plusieurs chemins d’accès de répertoire séparés par des points-virgules. Par exemple : C:\Dir1;C:\Dir2\DirA;C:\Dir2\DirB.
Les chemins d'accès relatifs sont pris en charge. Toutefois, vous devez ajouter une lettre de lecteur ou un partage réseau avant chaque chemin, sauf si vous démarrez toujours le débogueur à partir du même répertoire. Les partages réseau sont également pris en charge.
Pour chaque répertoire dans le chemin de symboles, le débogueur explore trois répertoires. Par exemple, si le chemin d’accès aux symboles inclut C:\Dir1 et que le débogueur recherche des informations de symboles pour une DLL, le débogueur recherche dans cet ordre :
C:\Dir1\symbols\dllC:\Dir1\dllC:\Dir1
Le débogueur répète ce processus pour chaque répertoire dans le chemin du symbole.
Emplacements de secours finaux :
- Répertoire courant
- Répertoire actif avec
..\dll,..\exeou..\sysajouté (en fonction du type binaire en cours de débogage)
Les fichiers de symboles ont des horodatages de date et d’heure. Le débogueur recherche toujours les symboles qui correspondent à l’horodatage sur les fichiers binaires qu’il débogue. Vous n’avez pas à vous soucier que le débogueur utilise les symboles incorrects qu’il trouve d'abord dans cette séquence. Pour plus d’informations sur les réponses lorsque les fichiers de symboles ne sont pas disponibles, consultez Noms de symboles correspondants.
Une façon de définir le chemin du symbole consiste à entrer la commande .sympath. Pour obtenir d’autres façons de définir le chemin d’accès aux symboles, consultez Contrôler le chemin d’accès aux symboles plus loin dans cette rubrique.
Contrôler le chemin d’accès aux symboles
Pour contrôler le chemin d’accès aux symboles, sélectionnez l’une des méthodes suivantes :
Utilisez la commande .symfix set symbol store path pour définir un chemin d’accès par défaut au serveur de symboles Microsoft public qui fonctionne bien dans de nombreuses situations. Pour définir un cache local, tapez
.symfix C:\MyCache.Utilisez la commande .sympath pour afficher, définir, modifier ou ajouter au chemin d’accès.
Avant de démarrer le débogueur, utilisez les
_NT_SYMBOL_PATHet_NT_ALT_SYMBOL_PATHvariables d’environnement pour définir le chemin d’accès. Le chemin d’accès aux symboles est créé en ajoutant_NT_SYMBOL_PATHaprès_NT_ALT_SYMBOL_PATH. En règle générale, vous définissez le chemin d’accès à travers le_NT_SYMBOL_PATH. Toutefois, vous pouvez utiliser_NT_ALT_SYMBOL_PATHpour remplacer ces paramètres dans des cas spéciaux, par exemple si vous avez des versions privées de fichiers de symboles partagés. Si vous essayez d’ajouter un répertoire non valide via ces variables d’environnement, le débogueur ignore ce répertoire.Lorsque vous démarrez le débogueur, utilisez l’option de ligne de commande -y pour définir le chemin d’accès.
Dans WinDbg uniquement, utilisez Fichier | Chemin du fichier de symboles ou appuyez sur
CTRL+Spour afficher, définir, modifier ou ajouter au chemin de symboles.
Si vous utilisez l'option de ligne de commande -sins, le débogueur ignore la variable d'environnement du chemin des symboles.
Mettre en cache les symboles localement
Nous vous recommandons de mettre en cache les symboles localement pour améliorer les performances du débogueur et réduire le trafic réseau. Pour mettre en cache des symboles, incluez cache*; ou cache*localsymbolcache; dans votre chemin d’accès aux symboles.
Si vous incluez la chaîne cache*; dans votre chemin de symbole, le débogueur stocke les symboles qu’il charge à partir d’un élément qui apparaît à droite de cette chaîne dans le répertoire de cache de symboles par défaut sur l’ordinateur local. Par exemple, la commande suivante indique au débogueur d’obtenir des symboles du partage réseau nommé \\someshare et de mettre en cache les symboles à l’emplacement par défaut sur l’ordinateur local.
.sympath cache*;\\someshare
Si vous incluez la chaîne cache*localsymbolcache; dans votre chemin de symbole, le débogueur stocke les symboles qu’il charge à partir d’un élément qui apparaît à droite de cette chaîne dans le répertoire localsymbolcache .
Par exemple, la commande suivante indique au débogueur d’obtenir des symboles à partir du partage \\someshare réseau et de mettre en cache les symboles dans le c:\MySymbols répertoire.
.sympath cache*C:\MySymbols;\\someshare
Utilisation d’un serveur de symboles : srv*
Si vous êtes connecté à Internet ou à un réseau d’entreprise, le moyen le plus efficace d’accéder aux symboles consiste à utiliser un serveur de symboles tel que le serveur de symboles publics Microsoft public. Vous pouvez utiliser un serveur de symboles à l’aide de l’une des chaînes suivantes dans votre chemin d’accès aux symboles.
Chaîne
srv*Si vous incluez la chaîne
srv*dans votre chemin de symbole, le débogueur utilise un serveur de symboles pour obtenir des symboles à partir du magasin de symboles par défaut. Par exemple, la commande suivante indique au débogueur d’obtenir des symboles à partir du magasin de symboles par défaut. Ces symboles ne sont pas mis en cache sur l’ordinateur local..sympath srv*Chaîne
srv*symbolstoreSi vous incluez la chaîne
srv*symbolstoredans le chemin de votre symbole, le débogueur utilise un serveur de symboles pour obtenir des symboles à partir du symbolstore. Par exemple, la commande suivante indique au débogueur d’obtenir des symboles à partir du magasin de serveurs de symboles Microsoft . Ces symboles ne sont pas mis en cache sur l’ordinateur local..sympath srv*https://msdl.microsoft.com/download/symbolsChaîne
srv*localsymbolcache*symbolstoreSi vous incluez la chaîne
srv*localcache*symbolstoredans votre chemin de symbole, le débogueur utilise un serveur de symboles pour obtenir des symboles à partir du magasin de symboles et les met en cache dans le répertoire localcache . Par exemple, la commande suivante indique au débogueur d’obtenir des symboles à partir du serveurhttps://msdl.microsoft.com/download/symbolsde symboles Microsoft et de mettre en cache les symboles dansc:\MyServerSymbols..sympath srv*C:\MyServerSymbols*https://msdl.microsoft.com/download/symbols
Si vous avez un répertoire sur votre ordinateur où vous placez manuellement des symboles, n’utilisez pas ce répertoire comme cache pour les symboles obtenus à partir d’un serveur de symboles. Utilisez plutôt deux répertoires distincts. Par exemple, vous pouvez placer manuellement des symboles dans c:\MyRegularSymbols et ensuite désigner c:\MyServerSymbols comme cache pour les symboles obtenus à partir d’un serveur. L’exemple suivant montre comment spécifier les deux répertoires dans votre chemin d’accès aux symboles.
.sympath C:\MyRegularSymbols;srv*C:\MyServerSymbols*https://msdl.microsoft.com/download/symbols
Pour plus d’informations sur les serveurs de symboles et les magasins de symboles, consultez magasins de symboles personnalisés et serveurs de symboles.
Combiner cache* et srv*
Si vous incluez la chaîne cache*; dans votre chemin de symbole, le débogueur stocke les symboles qu’il charge à partir d’un élément qui apparaît à droite de cette chaîne dans le répertoire de cache de symboles par défaut sur l’ordinateur local. Par exemple, la commande suivante indique au débogueur d’obtenir des symboles à partir du magasin de serveurs de symboles Microsoft et de les mettre en cache dans le répertoire de cache de symboles par défaut.
.sympath cache*;srv*https://msdl.microsoft.com/download/symbols
Si vous incluez la chaîne cache*localsymbolcache; dans votre chemin de symbole, le débogueur stocke les symboles qu’il charge à partir d’un élément qui apparaît à droite de cette chaîne dans le répertoire localsymbolcache .
Par exemple, la commande suivante indique au débogueur d’obtenir des symboles à partir du magasin de serveurs de symboles Microsoft et de mettre en cache les symboles dans le c:\MySymbols répertoire.
.sympath cache*C:\MySymbols;srv*https://msdl.microsoft.com/download/symbols
Utiliser AgeStore pour réduire la taille du cache
Vous pouvez utiliser l’outil AgeStore pour supprimer les fichiers mis en cache antérieurs à une date spécifiée ou pour supprimer suffisamment de fichiers anciens afin que la taille du cache résultante soit inférieure à une quantité spécifiée. Ce nettoyage des fichiers de cache est utile si votre magasin en aval est trop volumineux.
Chargement de symboles différés
Le débogueur utilise le chargement de symboles différés par défaut. Ce type de chargement signifie que le débogueur ne charge pas les symboles tant qu’il n’en a pas besoin.
Lorsque vous modifiez le chemin du symbole, par exemple en utilisant la commande .sympath, le débogueur recharge de manière différée tous les modules chargés avec des symboles d’exportation.
Le débogueur recharge paresseusement les symboles des modules avec des symboles PDB complets si le nouveau chemin n’inclut plus le chemin d’origine utilisé pour charger les symboles PDB. Si le nouveau chemin inclut toujours le chemin d’accès d’origine au fichier de symboles PDB, le débogueur ne recharge pas ces symboles de manière différée.
Vous pouvez désactiver le chargement de symboles différés dans CDB et KD à l’aide de l’option de ligne de commande -s. Vous pouvez également forcer le chargement de symboles à l’aide de la commande ld de chargement de symboles ou à l’aide de la commande module .reload accompagné de l'option /f.
Artefacts Azure DevOps Services
Un serveur de symboles est disponible avec Azure Artifacts dans Azure DevOps Services. Pour en savoir plus sur l’utilisation d’Azure Artifacts dans WinDbg, consultez Déboguer avec des symboles dans WinDbg (Azure Artifacts). Pour obtenir des informations générales sur les symboles générés par Azure, consultez la vue d’ensemble des symboles (Azure Artifacts).
Résolution des problèmes
Utilisez !sym bruyant ou l’option -nWinDbg Command-Line pour afficher des détails supplémentaires lorsque les symboles sont chargés. Pour obtenir des stratégies de résolution des problèmes supplémentaires, consultez Vérification des symboles.
Étapes suivantes
Maintenant que vous avez configuré votre chemin d’accès aux symboles, découvrez comment vérifier que les symboles sont chargés correctement et résoudre les problèmes courants :
Tâches connexes :
- Utiliser les fonctionnalités avancées du serveur de symboles
- Comprendre les fichiers de symboles en détail
Référence de commande :