Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Wat is Time Travel Debugging?
Time Travel Debugging is een hulpprogramma waarmee u een tracering van uw proces kunt vastleggen terwijl het wordt uitgevoerd en deze later opnieuw kunt afspelen, zowel vooruit als achteruit. Time Travel Debugging (TTD) kan u helpen om problemen gemakkelijker op te sporen door uw foutopsporingsprogrammasessie te 'terugspoelen' in plaats van het probleem te reproduceren totdat u de fout hebt gevonden.
Met TTD kunt u teruggaan in de tijd om beter inzicht te krijgen in de voorwaarden die tot de fout leiden en deze meerdere keren opnieuw afspelen om te leren hoe u het probleem het beste kunt oplossen.
TTD kan voordelen hebben ten opzichte van crashdumpbestanden, die vaak de status en het uitvoeringspad missen dat heeft geleid tot de uiteindelijke fout.
In het geval dat u het probleem niet zelf kunt achterhalen, kunt u de tracering delen met een collega en ze kunnen precies bekijken wat u bekijkt. Dit kan eenvoudiger samenwerken dan live foutopsporing, omdat de vastgelegde instructies hetzelfde zijn, terwijl de adreslocaties en code-uitvoering op verschillende pc's verschillen. U kunt ook een specifiek tijdstip delen om uw collega te helpen bepalen waar u moet beginnen.
TTD is efficiënt en werkt eraan om zo weinig mogelijk overhead toe te voegen wanneer code-uitvoering in traceringsbestanden wordt vastgelegd.
TTD bevat een set gegevensmodelobjecten voor foutopsporingsprogramma's waarmee u een query kunt uitvoeren op de tracering met behulp van LINQ. U kunt bijvoorbeeld TTD-objecten gebruiken om te zoeken wanneer een specifieke codemodule is geladen of om alle uitzonderingen te vinden.
Behoeften
Time Travel Debugging is geïntegreerd met WinDbg en biedt naadloze opname- en herhalingservaring.
Als u TTD wilt gebruiken, moet u het foutopsporingsprogramma uitvoeren met verhoogde bevoegdheden. Installeer WinDbg met een account met beheerdersbevoegdheden en gebruik dat account bij het opnemen in het foutopsporingsprogramma. Als u het foutopsporingsprogramma met verhoogde bevoegdheden wilt uitvoeren, selecteert en houdt u het WinDbg-pictogram ingedrukt (of klikt u erop met de rechtermuisknop) in het menu Start en selecteert u vervolgens Meer > uitvoeren als administrator.
Opmerkingen bij de uitgave
TTD blijft zich ontwikkelen, voor de nieuwste informatie, zie opmerkingen bij de release van Time travel-foutopsporing.
De opname kan persoonlijk identificeerbare of beveiligingsgerelateerde informatie bevatten
Het gemaakte traceringsbestand dat de opname bevat, kan persoonlijk identificeerbare of beveiligingsgerelateerde informatie bevatten, inclusief maar niet noodzakelijkerwijs beperkt tot bestandspaden, register, geheugen of bestandsinhoud. Exacte informatie is afhankelijk van de activiteit van het doelproces terwijl deze is vastgelegd. Houd hier rekening mee wanneer u opnamebestanden met anderen deelt.
TTD.exe opdrachtregelopnamehulpprogramma
Naast het vastleggen van traceringen in de WinDbg-gebruikersinterface, is er een TTD.exe opdrachtregelprogramma beschikbaar om een tracering op te nemen.
Mogelijk hebt u scenario's waarbij alleen de TTD-opdrachtregelrecorder is vereist: opnemen op een pc zonder het foutopsporingsprogramma te installeren, geavanceerde opnamescenario's, testautomatisering, enzovoort. In deze scenario's kunt u alleen de TTD-opdrachtregelrecorder installeren via een URL. Zie Time Travel Debugging - TTD.exe opdrachtregelprogramma voor meer informatie.
Vergelijking van hulpprogramma's voor foutopsporing
Deze tabel bevat een overzicht van de voor- en nadelen van de verschillende beschikbare oplossingen voor foutopsporing.
| Methode | Voordelen | Nadelen |
|---|---|---|
| Live foutopsporing | Interactieve ervaring, ziet de uitvoeringsstroom, kan de doelstatus, het vertrouwde hulpprogramma in een vertrouwde instelling wijzigen. | Verstoort de gebruikerservaring, kan moeite vereisen om het probleem herhaaldelijk te reproduceren, kan van invloed zijn op beveiliging, niet altijd een optie op productiesystemen. Met repro moeilijk te werken vanaf het punt van fout om de oorzaak te bepalen. |
| Stortplaatsen | Geen codering vooraf, laag-intrusief, op basis van triggers. | Opeenvolgende momentopnamen of livedumps geven een eenvoudige weergave van veranderingen in de loop der tijd. Overhead is in wezen nul als deze niet wordt gebruikt. |
| Telemetrie en logboeken | Lichtgewicht, vaak gekoppeld aan bedrijfsscenario's / gebruikersacties, machine learning-vriendelijk. | Er treden problemen op in onverwachte codepaden (zonder telemetrie). Gebrek aan gegevensdiepte, statisch gecompileerd in de code. |
| Foutopsporing voor tijdreizen (TTD) | Geweldig bij complexe bugs, geen codering vooraf, offline herhaalbare foutopsporing, analysevriendelijk, legt alles vast. | Grote overheadkosten in recordtijd. Kan meer gegevens verzamelen die nodig zijn. Gegevensbestanden kunnen groot worden. |
Videotraining
Zie deze video's voor meer informatie over TTD.
Defrag Tools 185 - Ivette en JamesP gaan over de basisbeginselen van TTD en demonstreren een aantal functies in WinDbg
Defrag Tools 186 - Jordi en JCAB demonstreert meer geweldige functies van TTD in WinDbg
CppCon (YouTube) - Jordi, Ken en JamesM hebben TTD in WinDbg gepresenteerd op CppCon 2017
Basisbeginselen van traceringsbestanden
Grootte van het traceerbestand
Het traceringsbestand kan groot worden en de gebruiker van TTD moet ervoor zorgen dat er voldoende vrije ruimte beschikbaar is. Als u een programma zelfs een paar minuten opneemt, kunnen de traceringsbestanden snel groeien tot meerdere gigabytes. 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.
Tracerings- en indexbestanden
In een traceringsbestand (.run) wordt de uitvoering van de code opgeslagen tijdens de opname.
Zodra de opname is gestopt, wordt er een indexbestand (.idx) gemaakt om de toegang tot de traceringsgegevens te optimaliseren. Indexbestanden worden ook automatisch gemaakt wanneer WinDbg traceringsbestanden opent.
Indexbestanden kunnen ook groot zijn, meestal twee keer zo groot als het traceringsbestand.
U kunt het indexbestand opnieuw maken vanuit het traceringsbestand met behulp van de !tt.index opdracht.
0:000> !tt.index
Successfully created the index in 10ms.
Opnamefouten en andere uitvoer van de opname worden geschreven naar een WinDbg-logboekbestand.
Alle uitvoerbestanden worden opgeslagen op een locatie die door de gebruiker is geconfigureerd. De standaardlocatie bevindt zich in de documentmap van gebruikers. Voor Gebruiker1 worden de TTD-bestanden bijvoorbeeld hier opgeslagen:
C:\Users\User1\Documents
Zie Time Travel Debugging - Werken met traceringsbestanden voor meer informatie over het werken met traceringsbestanden.
Dingen om op te letten
Anti-virus incompatibiliteiten
U kunt incompatibiliteiten tegenkomen vanwege de manier waarop TTD zich in een proces integreert om deze vast te leggen. Normaal gesproken treden er problemen op met antivirussoftware of andere systeemsoftware die probeert geheugen-aanroepen van het systeem bij te houden en te schaduwen. Als u problemen ondervindt met het opnemen, zoals een bericht met onvoldoende machtigingen, probeert u alle antivirussoftware tijdelijk uit te schakelen.
Andere hulpprogramma's die proberen geheugentoegang te blokkeren, kunnen ook problematisch zijn, bijvoorbeeld de Microsoft Enhanced Mitigation Experience Toolkit.
Een ander voorbeeld van een omgeving die conflicteert met TTD, zou het elektronentoepassingsframework zijn. In dit geval kan de tracering worden vastgelegd, maar een impasse of crash van het proces dat wordt vastgelegd, is ook mogelijk.
Alleen gebruikersmodus
TTD ondersteunt momenteel alleen bewerkingen in de gebruikersmodus, dus het traceren van een kernelmodusproces is niet mogelijk.
Alleen-lezen weergave
U kunt terug in de tijd reizen, maar u kunt de geschiedenis niet wijzigen. U kunt opdrachten voor leesgeheugen gebruiken, maar u kunt geen opdrachten gebruiken die geheugen wijzigen of schrijven.
Door het systeem beveiligde processen
Sommige met het Windows-systeem beveiligde processen, zoals het PPL-proces (Protected Process Light) zijn beveiligd, zodat de TTD zichzelf niet kan injecteren in het beveiligde proces om het vastleggen van de code-uitvoering mogelijk te maken.
Invloed van de prestaties van de opname
Het opnemen van een toepassing of proces is van invloed op de prestaties van de pc. De werkelijke overhead van de prestaties varieert op basis van de hoeveelheid en het type code dat tijdens de opname wordt uitgevoerd. U kunt in typische opnamescenario's een prestatievermindering van ongeveer 10x-20x verwachten. Soms is er geen merkbare vertraging in de gebruikersinterface. Maar voor de meer resource-intensieve bewerkingen, zoals het dialoogvenster Bestand openen, ziet u de impact van de opname.
Trace-bestandsfouten
Er zijn enkele gevallen waarin fouten in traceringsbestanden kunnen optreden. Zie Time Travel Debugging - Probleemoplossing voor meer informatie.
Geavanceerde functies van foutopsporing in Time Travel
Tijdlijnen
Tijdlijnen zijn een visuele weergave van gebeurtenissen die plaatsvinden tijdens de uitvoering. Deze gebeurtenissen kunnen locaties zijn van: onderbrekingspunten, geheugenlees- en schrijfbewerkingen, functie-aanroepen en -retourneringen, en uitzonderingen. Zie WinDbg - Tijdlijnen voor meer informatie over tijdlijnen.
Ondersteuning voor gegevensmodel voor foutopsporingsprogramma's
- Ingebouwde ondersteuning voor gegevensmodellen - TTD bevat ondersteuning voor gegevensmodellen. Het gebruik van LINQ-query's voor het analyseren van toepassingsfouten kan een krachtig hulpprogramma zijn. U kunt het gegevensmodelvenster in WinDbg gebruiken om te werken met een uitbreidbare en doorzoekbare versie van 'dx' en 'dx -g', waardoor u in staat wordt gesteld tabellen te maken met NatVis-, JavaScript- en LINQ-query's.
Zie WinDbg - Gegevensmodel voor algemene informatie over het foutopsporingsprogramma. Zie Time Travel Debugging - Inleiding tot time travel debugging-objecten voor informatie over het werken met het TTD-foutopsporingsprogrammamodel.
Ondersteuning voor scripts
- Scripting Automation - Ondersteuning voor scripts voor JavaScript en NatVis maakt automatisering van probleemonderzoek mogelijk. Zie Time Travel Debugging - JavaScript Automation voor meer informatie.
Zie WinDbg - Scripting voor algemene informatie over het werken met JavaScript en NatVis.
TTD.exe opdrachtregelhulpprogramma
Het TTD.exe opdrachtregelprogramma voor het vastleggen van traceringen is beschikbaar. Zie Time Travel Debugging - TTD.exe opdrachtregelprogramma voor meer informatie.
TTD-ondersteuning voor beheerde code
U kunt de SOS-foutopsporingsextensie (sos.dll) gebruiken die wordt uitgevoerd in de 64-bits modus om fouten in beheerde code op te sporen met behulp van TTD in WinDbg. Zie Beheerde code opsporen met behulp van het Windows-foutopsporingsprogrammavoor meer informatie.
Aan de slag met TTD
Bekijk deze onderwerpen om een traceringsbestand vast te leggen en opnieuw af te spelen, evenals voor informatie over het werken met traceringsbestanden en het oplossen van problemen.
- Tijdreizen debugging - een log vastleggen
- #B0 Tijdreizen Debuggen - Een trace opnieuw afspelen #C1
- Foutopsporing in Time Travel - Werken met traceringsbestanden
- Foutopsporing voor tijdreizen - Problemen oplossen
- Debugging voor tijdreizen - Voorbeeld van een app-walkthrough
In deze onderwerpen worden aanvullende geavanceerde functionaliteiten beschreven voor het debuggen van tijdreizen.