Partager via


Journalisation de pile et de vidage

Utilisation des commutateurs /stacktraceonerror et /minidumponerror

Il existe deux façons de capturer le suivi de la pile et les mini-vidages à partir de vos tests. Le plus simple est le mode « onerror ». Lorsque vous exécutez vos tests, fournissez les commutateurs « /stacktraceonerror » et/ou « /minidumponerror ». Ensuite, si vous rencontrez un échec, Logger capture la trace de la pile et/ou le mini-vidage pour vous dans le format par défaut.

L’autre méthode pour capturer la trace de pile et les mini-vidages consiste à utiliser les API décrites ci-dessous.

Utilisation de la fonctionnalité WexDebug.h pour capturer des traces de pile et des mini-vidages

WexDebug.h fournit des API pour capturer les traces de pile d’appels et les mini-vidages.

Appelez l’API SaveDump pour enregistrer un mini dump.

Cette API prend un paramètre DWORD facultatif (qui est une combinaison d’indicateur ou d’indicateur de type de vidage) et une référence de chaîne dans laquelle elle vous renvoie une chaîne contenant un nom de fichier et un chemin d’accès au fichier de vidage enregistré. Le nom de fichier est généré automatiquement par l’API et est basé sur la date et l’heure actuelles.

Le paramètre de type de vidage facultatif spécifie ce que le mini dump pris doit contenir. Il spécifie également si le vidage sera enregistré dans un fichier dmp ou cab et, dans le cas des fichiers cab, si les symboles seront enregistrés avec le vidage. Si le paramètre facultatif est omis, les paramètres par défaut sont utilisés.

Exemple (enregistrer le vidage dans une cabine avec ses pdbs) :

NoThrowString savedDumpFilePath;
HRESULT hr = Debug::SaveDump(MiniDumpFormat::WriteCab | MiniDumpFormat::WriteCabSecondaryFiles, savedDumpFilePath);

Notez que l’enregistrement d’un vidage dans un fichier cab prend plus de temps que l’enregistrement d’un vidage ordinaire ; l’attachement de fichiers de symboles prend encore plus de temps.

Appelez l’API GetStack pour obtenir une trace de pile d’appels.

Cette API prend un paramètre DWORD facultatif (qui est une combinaison d’indicateur ou d’indicateur de type) et une référence de chaîne dans laquelle elle vous renvoie une chaîne contenant la trace de pile d’appels pour le contexte actuel.

Le paramètre de type de pile facultatif spécifie ce que la trace de pile doit contenir. Si le paramètre facultatif est omis, les paramètres par défaut sont utilisés.

Exemple :

NoThrowString stackText;
HRESULT hr = Debug::GetStack(CallStackFormat::ColumnNames | CallStackFormat::FrameAddress |
                             CallStackFormat::SourceLine, stackText);

Corrélation des indicateurs d’option de pile avec les commandes du débogueur. Si vous utilisez la famille windbg de débogueurs, la liste de corrélation approximative suivante peut s’avérer utile :

Syntaxe du débogueur Indicateurs correspondants
k CallStackFormat::ColumnNames
Kv k + CallStackFormat::FunctionInfo
kp / kP k + CallStackFormat::P arameters
kn k + CallStackFormat::FrameNumbers
Kf k + CallStackFormat::FrameMemoryUsage

Référence technique

Si vous souhaitez obtenir plus d’informations sur les paramètres facultatifs de vidage et de pile, reportez-vous à la documentation fournie avec Outils de débogage pour Windows. Pour obtenir de la documentation sur les « indicateurs de vidage », consultez les DEBUG_FORMAT_XXX. Pour obtenir de la documentation sur les « indicateurs de pile », consultez OutputStackTrace.