Share via


Débogage de voyage dans le temps - Travailler avec les fichiers de trace

Logo de débogage avec voyage dans le temps mettant en vedette une horloge.

Cette section décrit comment travailler avec les fichiers créés et utilisés par le débogage de voyage dans le temps.

Aperçu des fichiers de trace

Le débogage de voyage dans le temps utilise les fichiers suivants pour déboguer l’exécution du code.

  • Le fichier de trace contient l’enregistrement de l’exécution du code et a une extension .RUN.

  • Le fichier d’index permet un accès rapide aux informations dans le fichier de trace et a une extension .IDX.

  • Les erreurs d’enregistrement et autres sorties d’enregistrement sont écrites dans le fichier journal du débogueur.

Fichiers de trace .RUN

Les fichiers de trace .RUN peuvent être ouverts après leur enregistrement en utilisant Fichier>Démarrer le débogage>Ouvrir le fichier de trace.

Capture d’écran des options d’ouverture de fichier avec l’option « Ouvrir le fichier de trace » mise en évidence.

Tous les fichiers de sortie de trace sont stockés dans le dossier de documents de l’utilisateur par défaut. Par exemple, pour l’utilisateur User1, les fichiers TTD seraient stockés ici :

C:\Users\User1\Documents

Vous pouvez modifier l’emplacement des fichiers de trace lorsque vous commencez à enregistrer. Pour plus d’informations, veuillez consulter la rubrique Débogage de voyage dans le temps - Enregistrement.

La liste des fichiers récemment utilisés vous permet d’accéder rapidement aux fichiers de configuration de cible précédemment utilisés. Tous les fichiers de trace ou fichiers de vidage récemment utilisés sont également répertoriés.

Capture d’écran de la liste d’ouverture de fichier affichant cinq fichiers de trace .run récemment utilisés.

Fichiers d’index .IDX

Un fichier d’index .IDX est créé pour le fichier de trace .RUN associé automatiquement lors de l’ouverture du fichier de trace dans WinDbg. Vous pouvez créer manuellement le fichier d’index en utilisant la commande !index. Un index permet un accès plus rapide aux informations de la trace.

Les fichiers IDX peuvent également être volumineux, généralement deux fois la taille du fichier .RUN.

Reconstruction du fichier .IDX

Vous pouvez reconstruire le fichier .IDX à partir du fichier .RUN en utilisant la commande !index. Pour plus d’informations, veuillez consulter la rubrique Débogage de voyage dans le temps - !index (débogage de voyage).

0:0:001> !index
Indexed 3/3 keyframes
Successfully created the index in 49ms.

Partage des fichiers de trace TTD .RUN

TTD est uniquement local et ne fonctionne pas en se connectant à distance à une autre machine.

Les fichiers de trace TTD peuvent être partagés avec d’autres en copiant le fichier .RUN. Cela peut être pratique pour demander l’aide d’un collègue pour résoudre le problème. Ils n’ont pas besoin d’installer l’application en panne ou de faire une autre configuration connexe pour tenter de reproduire le problème. Ils peuvent simplement charger le fichier de trace et déboguer l’application comme si elle était installée sur leur PC.

La machine sur laquelle vous rejouez la trace TTD doit prendre en charge toutes les instructions qui ont été utilisées sur la machine d’enregistrement - par exemple les instructions AVX.

Vous pouvez renommer le fichier pour inclure des informations supplémentaires, telles que la date ou un numéro de bogue.

Le fichier .IDX n’a pas besoin d’être copié car il peut être recréé en utilisant la commande !index comme décrit ci-dessus.

Conseil

Lors de la collaboration avec d’autres, transmettez toutes les positions de trace pertinentes liées au problème en cours. Le collaborateur peut utiliser la commande !tt x:y pour se déplacer à ce moment précis de l’exécution du code. Les plages de positions temporelles peuvent être incluses dans les descriptions de bogue pour suivre où le problème potentiel peut se produire.

Fichier d’erreur - Fichier journal

Les erreurs d’enregistrement et autres sorties d’enregistrement sont écrites dans le fichier journal du débogueur. Pour afficher le fichier journal, sélectionnez Affichage>Journaux.

Cet exemple montre le texte du journal d’erreurs lors de la tentative de lancement et d’enregistrement d’un exécutable nommé Foo.exe qui n’est pas dans le répertoire C:\Windows.

2017-09-21:17:18:10:320 : Information : DbgXUI.dll : TTD: Output: 
Microsoft (R) TTD 1.01.02
Release: 10.0.16366.1000
Copyright (C) Microsoft Corporation. All rights reserved.
Launching C:\Windows\Foo.exe
2017-09-21:17:18:10:320 : Error : DbgXUI.dll : TTD: Errors: 
Error: Trace of C:\Windows\Foo.exe PID:0 did not complete successfully: status:27
Error: Could not open 'Foo.exe'; file not found.
Error: Corrupted trace dumped to C:\Users\User1\Documents\Foo01.run.err.

Taille du fichier de trace

Les fichiers de trace TTD peuvent devenir très volumineux et il est important de s’assurer que vous disposez d’un espace disque suffisant disponible. Si vous enregistrez une application ou un processus même pendant quelques minutes seulement, le fichier de trace peut atteindre plusieurs gigaoctets. La taille du fichier de trace dépend de plusieurs facteurs décrits ci-dessous.

TTD ne définit pas de taille maximale des fichiers de trace pour permettre des scénarios complexes à long terme. Reproduire rapidement le problème permet de garder la taille du fichier de trace aussi petite que possible.

Facteurs de taille du fichier de trace

Il n’est pas possible de fournir une estimation exacte de la taille du fichier de trace, mais il existe quelques règles empiriques pour vous aider à comprendre les tailles de fichier TTD.

Les facteurs suivants peuvent affecter la taille du fichier de trace :

  • Le nombre d’instructions de code exécutées sur l’ensemble des threads lors de l’enregistrement de l’application ou du processus en cours d’exécution
  • La durée pendant laquelle l’application ou le processus a été enregistré (uniquement car cela affecte le nombre d’instructions de code enregistrées)
  • La taille des données de mémoire utilisées par l’application ou le processus

Le nombre d’instructions exécutées et enregistrées est le plus grand facteur qui affecte la taille du fichier de trace. Une trace nécessite généralement entre 1 bit et 1 octet par instruction exécutée. Une trace est susceptible d’être vers le bas de cette plage lorsque le programme enregistré exécute un nombre plus petit de fonctions distinctes et opère sur un ensemble de données plus petit. Une trace est susceptible d’être vers le haut de cette plage lorsque le programme enregistré exécute un plus grand nombre de fonctions distinctes ou opère sur un ensemble de données plus grand.

Règle empirique de taille de fichier de trace

Le fichier de trace augmente d’environ 5 Mo à 50 Mo par seconde lors de l’enregistrement d’une application ou d’un processus actif, selon les facteurs de taille du fichier de trace identifiés ci-dessus.

Le fichier de trace ne grossira pas lorsque l’application ou le processus enregistré est inactif (par exemple, en attente d’une entrée).

Actuellement, il n’y a pas de limite de taille de fichier maximale pour les fichiers de trace. WinDbg peut rejouer des fichiers de trace qui atteignent plusieurs centaines de gigaoctets.

Taille du fichier d’index

Le fichier d’index est automatiquement créé par WinDbg lorsque vous ouvrez une trace pour la première fois. Il contient des informations qui aident le débogueur à rejouer la trace et à interroger les informations sur la mémoire de manière plus efficace. Sa taille varie généralement de 1 à 2 fois la taille du fichier de trace. Les facteurs qui affectent sa taille sont similaires à ceux qui affectent la taille du fichier de trace.

Tout d’abord, la taille du fichier d’index varie en fonction de la longueur de la trace. Une trace qui contient un plus grand nombre d’instructions enregistrées aura généralement un index plus grand.

Deuxièmement, la taille de l’index varie en fonction de l’étendue des accès à la mémoire. Si le programme qui a été enregistré accédait fréquemment à un grand nombre d’emplacements mémoire distincts, l’index sera généralement plus grand que si le programme qui a été enregistré accédait à moins d’emplacements mémoire distincts ou si les accès aux emplacements mémoire étaient moins fréquents.

Étant donné que ces facteurs sont similaires à ceux qui affectent la taille du fichier de trace, la taille du fichier d’index varie généralement en fonction de la taille du fichier d’index (d’où notre estimation qu’elle est généralement entre 1x et 2x la taille du fichier de trace).

Que se passe-t-il si je manque d’espace disque ?

Les fichiers de trace TTD et d’index sont écrits sur le disque. Actuellement, il n’y a pas de limitation de taille maximale pour le fichier de trace ou l’index. Le fichier de trace augmente de taille jusqu’à ce que vous arrêtiez l’enregistrement ou que vous dépassiez la quantité d’espace disque disponible.

Pendant l’enregistrement : TTD écrira la dernière page dans le fichier de trace, puis attendra effectivement qu’il puisse écrire à nouveau. WinDbg continue d’afficher la boîte de dialogue d’enregistrement mais n’affiche aucun message d’erreur/avertissement en cas de manque d’espace disque pendant l’enregistrement.

Le manque d’espace disque pendant l’enregistrement entraîne un fichier de trace avec un enregistrement incomplet de l’exécution du code. Le fichier de trace incomplet peut être ouvert dans WinDbg mais il peut ne pas inclure le problème réel si l’erreur se produit après le manque d’espace disque lors de l’écriture du fichier de trace.

Solution de contournement : Ouvrez l’Explorateur de fichiers et vérifiez si l’espace libre sur le disque (c’est-à-dire le lecteur C :) est proche de zéro. Surveillez également le fichier de trace (.RUN) dans l’Explorateur de fichiers (par défaut dans le dossier Documents) et s’il ne grossit pas régulièrement, l’enregistrement peut être en attente. Sélectionnez le bouton Arrêter et déboguer dans WinDbg, libérez de l’espace ou enregistrez sur un autre disque, puis recommencez l’enregistrement.

Pendant l’indexation : Le débogueur peut produire un fichier d’index invalide, ce qui entraîne un comportement imprévisible dans le débogueur, ou le moteur hôte du débogueur peut s’écraser.

Solution de contournement : Fermez le débogueur et supprimez tout fichier d’index (.idx) qui peut exister pour votre trace. Libérez suffisamment d’espace disque, ou déplacez le fichier de trace vers un autre disque avec suffisamment d’espace libre. Ouvrez à nouveau la trace dans le débogueur et exécutez !index pour créer un nouvel index correct. L’indexation ne modifie pas le fichier de trace d’origine (.run), donc aucune donnée n’aura été perdue.

Voir aussi

Débogage de voyage dans le temps - Vue d’ensemble