Delen via


Foutopsporing voor tijdreizen - Werken met traceringsbestanden

tijdreizen-foutopsporingslogo met een klok.

In deze sectie wordt beschreven hoe u kunt werken met bestanden die zijn gemaakt en gebruikt door tijdreis-diagnostiek.

Overzicht van traceringsbestand

Time Travel Debugging maakt gebruik van de volgende bestanden om fouten in de uitvoering van code op te sporen.

  • Het traceringsbestand bevat de opname van de code-uitvoering en heeft een . RUN-extensie.

  • Het indexbestand maakt snelle toegang tot informatie in het traceringsbestand mogelijk en heeft een . IDX-extensie.

  • Opnamefouten en andere uitvoer van de opname worden geschreven naar het logbestand van de debugger.

Spoor. RUN-bestanden

Trace .RUN-bestanden kunnen worden geopend nadat ze zijn vastgelegd met >Debuggen starten>Open traceringsbestand.

Schermopname van opties voor bestand openen met de optie Traceringsbestand openen gemarkeerd.

Alle traceringsuitvoerbestanden worden standaard opgeslagen in de documentmap van gebruikers. Voor Gebruiker1 worden de TTD-bestanden bijvoorbeeld hier opgeslagen:

C:\Users\User1\Documents

U kunt de locatie van de traceringsbestanden wijzigen wanneer u begint met opnemen. Zie Time Travel Debugging - Opname voor meer informatie.

Met de laatst gebruikte lijst met bestanden kunt u snel toegang krijgen tot eerder gebruikte doelconfiguratiebestanden. Alle recent gebruikte traceringsbestanden of dumpbestanden worden ook vermeld.

Schermopname van de lijst met geopende bestanden met vijf recent gebruikte .run trace-bestanden.

Index .IDX-bestanden

Een indexbestand (.IDX) wordt automatisch gemaakt voor het bijbehorende traceerbestand (.RUN) wanneer het traceerbestand in WinDbg wordt geopend. U kunt het indexbestand handmatig maken met behulp van de opdracht !index. Een index biedt snellere toegang tot de traceringsgegevens.

IDX-bestanden kunnen ook groot zijn, meestal twee keer zo groot als de grootte van de . RUN-bestand.

Het opnieuw maken van de . IDX-bestand

Met behulp van de !index opdracht kunt u het .IDX-bestand opnieuw maken uit het .RUN-bestand. Zie Time Travel Debugging - !index (tijdreis)voor meer informatie.

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

TTD-trace .RUN-bestanden delen

TTD is alleen lokaal en werkt niet op afstand met een andere computer.

TTD-traceringsbestanden kunnen met anderen worden gedeeld door het .RUN-bestand te kopiëren. Dit kan handig zijn om een collega te laten helpen bij het oplossen van het probleem. Ze hoeven de crashende app niet te installeren of een andere gerelateerde installatie uit te voeren om het probleem te reproduceren. Ze kunnen alleen het traceringsbestand laden en fouten opsporen in de app alsof deze op hun pc is geïnstalleerd.

De machine waarop u de TTD-trace opnieuw afspeelt, moet alle instructies ondersteunen die zijn gebruikt op de recordmachine, bijvoorbeeld AVX-instructies.

U kunt de naam van het bestand wijzigen om aanvullende informatie op te nemen, zoals de datum of een foutnummer.

De. IdX-bestand hoeft niet te worden gekopieerd omdat het opnieuw kan worden gemaakt met behulp van de opdracht !index zoals hierboven beschreven.

Hint

Wanneer u samenwerkt met anderen, geeft u alle relevante traceringsposities door die betrekking hebben op het probleem. De samenwerker kan de !tt x:y opdracht gebruiken om naar dat exacte tijdstip in de uitvoering van de code te gaan. Tijdspositiebereiken kunnen worden opgenomen in foutbeschrijvingen om bij te houden waar het mogelijke probleem zich kan voordoen.

Fout - logboekbestand

Opnamefouten en andere uitvoer van de opname worden geschreven naar het debugger-logbestand. Als u het logboekbestand wilt weergeven, selecteert u Logboeken weergeven>.

In dit voorbeeld ziet u de tekst van het foutenlogboek bij het starten en vastleggen van een uitvoerbaar bestand met de naam Foo.exe die zich niet in de map C:\Windows bevindt.

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.

Grootte van het traceerbestand

TTD-traceringsbestanden kunnen echt groot worden en het is belangrijk om ervoor te zorgen dat u voldoende vrije schijfruimte beschikbaar hebt. Als u een app of proces zelfs een paar minuten opneemt, kan het traceringsbestand enkele gigabytes groot worden. De grootte van het traceringsbestand is afhankelijk van een aantal factoren die hieronder worden beschreven.

TTD stelt geen maximale grootte van traceringsbestanden in om complexe langdurige scenario's mogelijk te maken. Door het probleem snel opnieuw te creëren, kan de grootte van het traceringsbestand zo klein mogelijk blijven.

Factoren voor de bestandsgrootte traceren

Het is niet mogelijk om een exacte schatting van de grootte van het traceringsbestand op te geven, maar er zijn enkele vuistregels om u te helpen inzicht te krijgen in TTD-bestandsgrootten.

De volgende factoren kunnen van invloed zijn op de grootte van het traceringsbestand:

  • Het aantal code-instructies dat wordt uitgevoerd voor alle threads bij het opnemen van de actieve app of het actieve proces
  • De tijdsduur waarin de app of het proces is vastgelegd (alleen omdat dit van invloed is op het aantal opgenomen code-instructies)
  • De grootte van de geheugengegevens die door de app of het proces worden gebruikt

Het aantal uitgevoerde en vastgelegde instructies is de grootste factor die van invloed is op de grootte van het traceringsbestand. Een tracering vereist doorgaans tussen 1 bit en 1 byte per instructie die wordt uitgevoerd. Een tracering is waarschijnlijk aan het onderste uiteinde van dat bereik wanneer het opgenomen programma een kleiner aantal afzonderlijke functies uitvoert en werkt op een kleinere set gegevens. Een tracering bevindt zich waarschijnlijk aan de hogere kant van dat bereik wanneer het opgenomen programma een groter aantal verschillende functies uitvoert of met een grotere gegevensset werkt.

Vuistregel voor bestandsgrootte

Het traceringsbestand groeit ongeveer 5 MB tot 50 MB per seconde bij het opnemen van een actieve app of proces, afhankelijk van de factoren voor de traceringsbestandsgrootte die hierboven zijn geïdentificeerd.

Het traceringsbestand wordt niet groter wanneer de app of het proces dat wordt geregistreerd niet actief is (bijvoorbeeld wanneer wordt gewacht op invoer).

Momenteel is er geen maximale bestandsgrootte voor traceringsbestanden. WinDbg kan traceringsbestanden die ruim in de honderden gigabytes groot zijn, opnieuw afspelen.

Grootte van indexbestand

Het indexbestand wordt automatisch gemaakt door WinDbg wanneer u voor het eerst een tracering opent. Het bevat informatie die het foutopsporingsprogramma helpt om de trace te herhalen en informatie over het geheugen efficiënter op te vragen. De grootte varieert over het algemeen van 1 tot 2 keer de grootte van het traceringsbestand. De factoren die van invloed zijn op de grootte, zijn vergelijkbaar met de factoren die van invloed zijn op de grootte van het traceringsbestand.

Ten eerste wordt de grootte van het indexbestand geschaald ten opzichte van de lengte van de tracering. Een tracering die een groter aantal vastgelegde instructies bevat, heeft over het algemeen een grotere index.

Ten tweede wordt de grootte van de index geschaald ten opzichte van de breedte van de geheugentoegang. Als het programma dat regelmatig is opgenomen een groot aantal verschillende geheugenlocaties heeft geopend, is de index over het algemeen groter dan als het programma dat is geregistreerd minder verschillende geheugenlocaties gebruikt of als toegang tot geheugenlocaties minder vaak is.

Omdat deze factoren vergelijkbaar zijn met de factoren die van invloed zijn op de grootte van het traceringsbestand, wordt de grootte van het indexbestand meestal geschaald ten opzichte van de grootte van het indexbestand (dus onze schatting dat het meestal tussen 1x en 2x de grootte van het traceringsbestand is).

Wat gebeurt er als ik onvoldoende schijfruimte heb?

Zowel de TTD-tracerings- als de indexbestanden worden naar de schijf geschreven. Er is momenteel geen maximale bestandsgrootte voor het tracerings- of indexbestand. Het traceringsbestand wordt groter totdat u stopt met opnemen of de hoeveelheid beschikbare schijfruimte overschrijdt.

Tijdens de opname: TTD zal de laatste pagina naar het traceringsbestand schrijven en wacht vervolgens totdat het opnieuw kan beginnen met schrijven. WinDbg blijft het dialoogvenster Opnemen weergeven, maar er wordt geen foutbericht/waarschuwing weergegeven wanneer er onvoldoende schijfruimte beschikbaar is tijdens de opname.

Onvoldoende schijfruimte tijdens het opnemen resulteert in een traceringsbestand met een onvolledige record van de uitvoering van de code. Het onvolledige traceringsbestand kan worden geopend in WinDbg, maar het kan niet het werkelijke probleem bevatten als de fout optreedt nadat er onvoldoende schijfruimte is opgetreden bij het schrijven van het traceringsbestand.

Tijdelijke oplossing: Open Windows Verkenner en controleer of de vrije schijfruimte bijna op is. Kijk ook naar de tracering (. RUN)-bestand in Verkenner (standaard in map Documenten) en als het bestand niet regelmatig groter wordt, wacht de opname mogelijk. Selecteer de knop Stoppen en foutopsporing in WinDbg, maak ruimte vrij of sla deze op een andere schijf op en start de opname opnieuw.

Tijdens het indexeren: Het foutopsporingsprogramma kan een ongeldig indexbestand produceren, wat resulteert in onvoorspelbaar gedrag in het foutopsporingsprogramma of de host van de foutopsporingsprogramma-engine kan vastlopen.

Tijdelijke oplossing: sluit het foutopsporingsprogramma en verwijder een indexbestand (.idx) dat mogelijk bestaat voor uw tracering. Maak voldoende schijfruimte vrij of verplaats het traceringsbestand naar een andere schijf met voldoende vrije ruimte. Open de tracering opnieuw in het foutopsporingsprogramma en voer !index uit om een nieuwe, juiste index te maken. Indexering wijzigt het oorspronkelijke traceringsbestand (.run) niet, zodat er geen gegevens verloren zijn gegaan.

Zie ook

Time Travel Debugging - Overzicht