Tests cloud ou distribués AddressSanitizer
Vous n’avez pas besoin de déboguer les erreurs AddressSanitizer quand et où elles se produisent. Configurez le runtime pour créer un vidage sur incident qui stocke tout le contexte spécifique à AddressSanitizer lorsqu’une erreur se produit. Envoyez ensuite ce vidage sur incident à un autre PC pour le débogage. Le débogage hors connexion peut être un timesaver critique lors de l’exécution de AddressSanitizer dans le cloud ou dans des tests distribués. Vous pouvez créer le vidage sur l’infrastructure de test ou de production où l’échec se produit et le déboguer ultérieurement sur votre PC développeur.
Le débogueur Visual Studio fournit des erreurs AddressSanitizer diagnostiqués avec précision. Vous pouvez afficher ces bogues sans avoir à réexécuter des tests, copier d’énormes jeux de données, découvrir des données perdues ou rechercher des machines de test qui sont passées hors connexion. Vous devez uniquement charger le vidage sur incident.
Les vidages sur incident sont créés lors des échecs addressSanitizer en définissant la variable d’environnement suivante :
set ASAN_SAVE_DUMPS=MyFileName.dmp
Remarque
Le nom de fichier doit avoir un suffixe .dmp
pour suivre les conventions d’affectation de noms de Visual Studio.
Ce fichier de vidage peut être affiché à l’aide de Visual Studio à une date ultérieure sur un autre ordinateur.
Visual Studio peut afficher les informations d’erreur dans le contexte du code source d’origine. Pour ce faire, Visual Studio nécessite le débogage des symboles et du code source indexé. Pour une expérience de débogage optimale, le code EXE, PDB et source utilisé pour produire ces fichiers binaires doit correspondre.
Pour plus d’informations sur le stockage des sources et des symboles, consultez la section source et symboles . Pour plus d’informations sur les détails de l’implémentation et le contrôle affiné, consultez l’intégration du débogueur.
Exemple : générer, tester et analyser
Prenez en compte trois machines : A, B et C. Les builds sont effectuées sur la machine B, les tests sont exécutés sur l’ordinateur C et vous analysez les défaillances sur l’ordinateur A. Les erreurs sont signalées par rapport aux numéros de ligne source et de colonne dans votre code source. Vous pouvez voir la pile des appels avec un ensemble de symboles dans le fichier PDB produit à l’aide de cette version exacte du code source.
Les étapes suivantes concernent les scénarios locaux ou distribués qui entraînent la création d’un fichier .dmp et pour afficher ce fichier de vidage AddressSanitizer hors connexion.
Produire un .dmp localement
- Build
- Tester l’exécutable
- Copier un fichier .dmp généré dans le répertoire de build
- Ouvrez le fichier .dmp avec le fichier .pdb associé, dans le même répertoire
Produire un .dmp sur un système distribué
- Générer et post-traiter la base de données PDB pour les blocs de données d’indexation source
- Copiez la paire atomique de (.exe, .pdb) sur la machine de test et exécutez des tests
- Écrire les paires atomiques de (.pdb, .dmp) dans la base de données de création de rapports de bogues
- Visual Studio ouvre un fichier .dmp avec le fichier .pdb associé, dans le même répertoire
Remarque
La machine Visual Studio 2019 que vous utilisez pour l’analyse doit avoir accès à GitHub ou à l’emplacement interne où \\Machine\share
votre source indexée est stockée.
Afficher les fichiers .dmp AddressSanitizer
Vérifiez que l’IDE du débogueur peut trouver vos fichiers PDB et source.
Ouvrez Visual Studio et sélectionnez Continuer sans code. Sélectionnez Ensuite Fichier>ouvert>pour ouvrir la boîte de dialogue Ouvrir le fichier. Vérifiez que le suffixe de nom de fichier est .dmp.
L’écran affiché ici a besoin d’une étape supplémentaire pour activer l’accès IDE aux symboles et à la source.
Définissez les chemins d’accès aux symboles, puis choisissez Déboguer avec native uniquement.
Cette capture d’écran montre le fichier de vidage chargé final, avec les sources et les métadonnées AddressSanitizer chargées.
Source et symboles
Le serveur source permet à un client de récupérer la version exacte des fichiers sources utilisés pour générer une application. Le code source d’un exécutable ou d’une DLL peut changer au fil du temps et entre les versions. Vous pouvez l’utiliser pour examiner le même code source que celui qui a généré une version particulière de l’application.
Lors du débogage d’un EXE avec son fichier PDB, le débogueur peut utiliser le bloc de données du serveur source incorporé pour récupérer les fichiers appropriés à partir du contrôle de code source. Il charge les fichiers mappés aux noms qualifiés complets placés automatiquement dans la base de données PDB par l’option du /Zi
compilateur.
Pour utiliser le serveur source, l’application doit être « indexée source » à l’aide pdbstr.exe
d’un srcsrv
bloc de données dans votre fichier PDB. Pour plus d’informations, consultez la section Bloc de données du serveur source et de l’indexation source. Vous trouverez également les étapes permettant d’indexer les sources et de publier des symboles et de spécifier des symboles et du code source pour le débogueur.
Pour obtenir une documentation externe, consultez :
- Indexation source avec Git
- Guide pour faciliter le débogage
- L’indexation source est sous-utilisée géniale
Voir aussi
Vue d’ensemble de AddressSanitizer
Résoudre les problèmes connus liés à AddressSanitizer
Référence de build et de langage AddressSanitizer
Informations de référence sur le runtime AddressSanitizer
Octets d’ombre AddressSanitizer
Intégration du débogueur AddressSanitizer
Exemples d’erreur AddressSanitizer