Delen via


Releaseopmerkingen voor tijdreis-foutopsporing

tijdreizen-foutopsporingslogo met een klok.

Dit onderwerp bevat informatie over wat er nieuw is in Time Travel Debugging.

1.11.481

We hebben het commando !tt vernieuwd om u meer krachtige mogelijkheden te bieden om door uw tracering te navigeren.

  • Breukpercentages kunnen worden gebruikt om de zoekruimte (!tt 23,65) te verfijnen
  • Zoek de vorige/volgende keer dat een register wijzigt waarde (!tt br ebx)
  • Zoek de vorige/volgende keer dat een geheugenbereik wordt geopend (!tt ba- [addr] [bereik])
  • Zoek de vorige/volgende keer dat de uitvoering wordt verplaatst naar een andere module (!tt bm)
  • Zoek de vorige/volgende keer dat de uitvoering wordt verplaatst naar een specifieke module (!tt bm ntdll)

Zie de documentatievoor meer informatie.

Enkele belangrijke oplossingen:

  • 'Fout: 64-bits waarde verliest precisie bij conversie naar getal' berichten bij gebruik van @$cursession.TTD.Data.Heap() op 32-bits tracering zijn verdwenen.
  • Parsing van helpopties (-?, -help) wordt nu overal in de opdrachtregel correct gedetecteerd.
  • dx @$cursession.TTD.Calls() hoeft adressen niet langer overeen te komen met het begin van een functie. In plaats daarvan wordt het adres toegewezen aan het begin van de dichtstbijzijnde overeenkomende functie.
  • TTD rapporteert correct de doelversie van het besturingssysteem vanuit de vertarget opdracht.
  • Het gebruik van '-monitor' met een gehoste servicenaam registreert niet langer niet-gerelateerde gehoste services.

Toegevoegd

  • Wijzigingsonderpunten registreren in TTD-traceringen (1.11.431)

Gewijzigd

  • Opname van diensten op naam herstellen door middel van de monitormodus (1.11.477)
  • Leg de besturingssysteemgegevens van het doelsysteem vast voor gebruik door foutopsporingsprogramma (1.11.473)
  • De overdracht van XMM-registers tussen de emulator en CONTEXT herstellen (1.11.469)
  • Aanroepquery's op adressen in een functie toestaan (1.11.459)
  • Ondersteuning voor symbolen als adressen/grootten in de opdrachtregel !tt (1.11.454)
  • De consistentie verbeteren en de mogelijkheden van TTD-navigatieopdrachten uitbreiden (1.11.453)
  • De consistentie van module DB verbeteren ten aanzien van beschadigde gegevens (1.11.430)

Gerepareerd / Opgelost

  • Procesnaam toevoegen aan uitvoer bij het koppelen aan PID (1.11.486)
  • TTD. Data.Heap() rapporteert 'Fout: 64-bits waarde verliest precisie bij conversie naar getal' in sommige gevallen (1.11.471)
  • De betrouwbaarheid van het opnemen van een proces verbeteren met schaduwstacks ingeschakeld (1.11.466)
  • Modulenavigatie toevoegen via !tt bm en gegevensmodel (1.11.462)
  • Los enkele problemen met het parseren van opdrachtregels op. (1.11.444)
  • Herstel lodsd, dubbelwoord lezen van adres (bovenste deel van rax op nul zetten) (1.11.434)
  • Enkele libfuzzer-bugs oplossen (1.11.433)

1.11.429

Deze update van TTD bevat enkele bugfixes, samen met enkele interne wijzigingen om de betrouwbaarheid te verbeteren.

Opmerking: 1.11.410 introduceerde een regressie in de emulatie van de Intel/AMD LODSD-instructie. Een oplossing hiervoor komt in de volgende release.

Herstellingen:

  • Verbeter de robuustheid van het lezen van pakketten en andere diverse wijzigingen om de betrouwbaarheid te verbeteren.
  • Herstel een regressie bij het emuleren van de AVX VBROADCAST[I/F]128-instructie.
  • Herstel de toegang tot uitzonderingsrecords in ARM64 in nieuwere builds van Windows.

1.11.410

Verbeterde toegankelijkheid: de voortgangsinterface wordt nu correct geschaald met wijzigingen in de tekstgrootte.

De opdracht @$cursession.TTD.Calls() in het foutopsporingsprogramma ondersteunt nu jokertekens die overeenkomen met een groot aantal functies. Het is nu mogelijk om een query uit te voeren op grote aantallen functies (@$cursession.TTD.Calls("kernel32!*")).

Automatisering: Een nieuwe -onMonitorReadyEvent opdrachtregeloptie geeft aan wanneer de opnamemonitor (-monitor switch) gereed is om nieuwe processen op te nemen.

Herstellingen:

  • Herstel bepaalde racevoorwaarden tijdens het initialiseren van de recorder.
  • Herstel hoe syscalls worden opgenomen, zodat onderbrekingspunten correct werken.
  • Los meerdere problemen op met betrekking tot moduleselectieve opname.

ARM64-oplossingen:

  • Er is een fout opgelost waardoor TTD-opnamen niet op gewone CPU's op ARM64v8.0-niveau voorkomen.
  • Verbeterde het berichten wanneer geprobeerd wordt op ARM64 een tracering van een x86- of x64-proces te gebruiken.

AMD/Intel-oplossingen (bevat enkele problemen die door Google zijn gerapporteerd):

  • Er is een onjuiste emulatie van LODS opgelost: in plaats van de ongebruikte bits van RAX te verwijderen, blijven ze nu correct behouden.
  • De emulatie van de "pop ax"-instructie in x86/x64-processen is hersteld, zodat de bovenste bits van het volledige register niet langer onjuist op nul worden gesteld (bijvoorbeeld: "pop ax" verwijderde de bovenste bits van rax).
  • Directe emulatie van de XGETBV-instructie (sneller).
  • Directe emulatie van alle AVX512 SIMD-bewegingen (sneller).

1.11.316

Er is een regressie opgelost die incidentele crashes veroorzaakte bij het opnemen van programma's met lange ononderbroken instructiesreeksen met veel gegevens.

ARM64-herstelmaatregelen:

  • Opname in ARM64-processen waarvoor de PAC-functie is ingeschakeld, wordt nu ondersteund.
  • De ANDS- en TST-instructies zijn gecorrigeerd, omdat ze de overdracht- en overloopvlaggen niet konden wissen.

AMD/Intel oplossingen:

  • Er is een bug opgelost waarbij TTD de instructies "xchg r8,rax" en "xchg r8w,ax" ten onrechte als NOP heeft uitgevoerd.

1.11.304

TTD implementeert en publiceert nu openbaar een API om de recorder vanuit het live opgenomen proces te beheren. Documentatie en een voorbeeld vindt u in GitHub-.

TTD kan nu zichzelf injecteren met de opname uitgeschakeld, met behulp van de nieuwe -recordMode schakelaar. TTD maakt standaard gebruik van -recordMode Automatic waardoor alle threads worden vastgelegd. Als -recordMode Manual is opgegeven, injecteert TTD in het doelproces, maar registreert niets totdat dit is verteld via een API-aanroep.

Opname kan nu worden beperkt tot een specifieke set modules met behulp van de -module-switch. In sommige scenario's kan dit leiden tot aanzienlijk snellere opname- en kleinere traceringsbestanden. Er kunnen meer dan één -module switch worden opgegeven.

Overeenkomende record- en herhalingsonderdelen worden nu opgenomen in de distributie. In het geval van een incompatibiliteit tussen het foutopsporingsprogramma en de opdrachtregelrecorder, of een herhalingsfout, kunnen de onderdelen voor opnieuw afspelen worden gekopieerd naar de installatie van het foutopsporingsprogramma als tijdelijke oplossing totdat een nieuw foutopsporingsprogramma wordt uitgebracht.

De geïnstalleerde bestandslocatie vindt u in PowerShell door het volgende te doen:

ls (Get-AppxPackage | where Name -eq 'Microsoft.TimeTravelDebugging').InstallLocation

Toegevoegd

  • Voeg -recordmode schakelaar toe om injectie in te schakelen zonder automatische opname (1.11.296)
  • Voeg -module switch toe en gebruik deze om SR-configuratie te maken (1.11.291)
  • Aangepaste gegevens projecteren die zijn vastgelegd door de IN-process-API naar het gegevensmodel (1.11.286)
  • Voeg een nieuwe TTDLiveRecorder.dll toe en verbind deze samen met TTDRecordCPU.dll (1.11.283)
  • Herhalingscomponenten toevoegen aan MSIX &, SDK-zoekactie herstellen (1.11.265)

Gewijzigd

Geen

Gerepareerd / Opgelost

  • Omzeil bug in de nlohmann JSON-serializer, die wordt gebruikt in sommige interne hulpmiddelen (1.11.281)
  • Tekenreeksuitlijning aanpassen om een zeldzame CRT-fout te voorkomen (1.11.279)
    • Gerapporteerd aan en opgelost in de codebases van vs en besturingssystemen.
  • Verschillende kleine oplossingen uit Watson crash reports (1.11.276)
  • Herstel een regressie die in sommige gevallen beschadiging van traceringsbestanden kan veroorzaken (1.11.264)

Bekende problemen

  • In ARM64 kan de compiler een aantal functies met een hoge frequentie niet meer aanroepen, waardoor de recorder in extreme gevallen geen stackruimte meer heeft en crasht.

1.11.261

Belangrijke wijzigingen in deze release zijn onder andere:

  • [ARM64] Het gedrag van de SXTL, SQXTN2, SQXTUN2, UQXTN2, XTN2 en TRN1 instructies verbeterd wanneer het doelregister als bron wordt gebruikt.
  • [ARM64] Er is een probleem opgelost waardoor de debugger SIMD-registers weergeeft, waarbij hun lagere 64 bits worden gedupliceerd in de hogere 64 bits.
  • [AMD64] AVX512-emulatieoplossingen voor AMD's Zen4-processors (registers zijn beschadigd geraakt).

Gewijzigd

  • Implementeer een nieuw versiebeheersysteem specifiek voor de emulator. (1.11.260)

Gerepareerd / Opgelost

  • Corrigeer foutieve ARM64-instructies waarbij het doelregister ook als bron wordt gebruikt. (1.11.261)
  • Herstel de Zen4-workaround voor het direct terugkeren naar de emulator. (1.11.222)

1.11.202

Deze release lost een aantal problemen op die optreden tijdens het opnemen van services of het starten van het bewakingsproces via de -monitor-switch. Het verwijdert ook ondersteuning voor ARM32-opnamen uit het product.

Gewijzigd

  • Verklein de binaire grootte door TTD-onderdelen als DLL te koppelen aan UCRT. (1.11.191)

Gerepareerd / Opgelost

  • Het vastleggen van services herstellen. (1.11.193)
  • Los verschillende problemen op bij het gebruik van -monitor. (1.11.189)
  • Corrigeer het stackframe van de functie die niet-vluchtige gegevens opslaat bij het uitvoeren van terugvalbewerkingen op x64 (1.11.188)
  • Uitvoerbuffering opnieuw ingeschakeld voor TTD (1.11.187)
  • Corrigeer de verwerking van de handle van het groepsbeleidsobject in de ProcessMonitorServer (1.11.179)

Verwijderd

  • ARM32-opnamecode verwijderen uit de opslagplaats (1.11.198)

1.11.173

Deze release verhoogt de zichtbaarheid van bepaalde foutberichten door ze uit het .out-bestand te extraheren en af te drukken naar de console. Ook wordt er tijdens trace-replay een zeldzame crash opgelost.

Gewijzigd

  • Foutberichten uit .out-bestand extraheren en afdrukken (1.11.173)

Gerepareerd / Opgelost

  • Er is een bestandconflict opgelost tijdens het lezen van een .out-bestand uit een afzonderlijk proces. (1.11.171)
  • Herstel zeldzame crash tijdens tracereproductie. (1.11.166)

1.11.163

Deze release voegt ondersteuning toe voor het opnemen van x86-processen op x64-machines.

Gewijzigd

  • X86-opname met x64 TTD-installatie herstellen (1.11.163)

Gerepareerd / Opgelost

  • EULA opschonen (1.11.161)

1.11.159

Deze release is de eerste openbare release van de opdrachtregelrecorder. Naast verschillende wijzigingen die nodig zijn om openbare release van de opdrachtregelrecorder in te schakelen, bevat deze release ook een aantal bugfixes, waaronder een aantal fixes voor de CPU-emulator.

De nieuwe -timestampFileName-switch maakt het genereren van .run-bestanden op basis van een tijdstempel mogelijk. Dit is handig wanneer u veel exemplaren van hetzelfde proces opneemt en de opstarttijd van de opname wilt minimaliseren.

Gewijzigd

  • Kies de standaardinjectiemodus tijdens runtime op basis van welke tracer wordt gebruikt (1.11.156)
  • Schakeloptie toevoegen om op tijdstempel gebaseerde .run-bestandsgeneratie in te schakelen (1.11.155)
  • Gebruiksrechtovereenkomst en -accepteula toevoegen aan TTD (1.11.154)
  • Voeg ProcLaunchMon.sys toe aan MSIX (1.11.153)
  • Maak per architectuur MSIX en MSIXBUNDLE (1.11.152)
  • Los een aantal problemen op die zijn opgekomen bij het testen van TTD die is gebouwd met Clang. (1.11.146)
  • Clang-oplossingen voor TTDAnalyze (1.11.144)

Gerepareerd / Opgelost

  • Beoordeel feedback over appinstaller en openbare release (1.11.159)
  • RC-feedback (1.11.157)
  • Vermijd het overschrijven van het Zero-register door RegisterInfo te initialiseren zodat het naar Sink verwijst. (1.11.149)
  • Corrigeer de TST-instructie met een directe waarde en verbeter de unit test om deze en andere gevallen te dekken. (1.11.148)
  • Beslissing over beveiligd proces samenvoegen en het gebruik van beveiligde processen uitschakelen (1.11.147)

1.11.138

Gewijzigd

  • Opname MSIX maken (1.11.138)
  • Los alle problemen op zodat Clang TTD kan bouwen. (1.11.137)
  • Introduceer -monitor X als manier om een proces vast te leggen wanneer het wordt gestart (1.11.116)

Gerepareerd / Opgelost

  • CMP ZR ARM64-emulatie herstellen (1.11.128)
  • AVX512-emulatie op AMD's Zen4-processors herstellen (1.11.127)
  • Oplossing voor het mechanisme dat TTD gebruikt om bestanden voor een specifieke CPU te vinden (1.11.121)
  • X86 TTD-regressie herstellen (TTDRecordCPU.dll kan niet worden geladen) (1.11.110)
  • Herstel de terugkeer naar het systeemeigen pad op ARM64 om X28 niet te verwijderen (1.11.109)

Zie ook

foutopsporing voor tijdreizen - Overzicht

Foutopsporing in Time Travel - opdrachtregelrecorder