Időutazási hibakeresés kiadási megjegyzései

Az időutazás hibakeresési emblémája órajelet tartalmaz.

Ez a témakör a Time Travel hibakeresésének újdonságairól nyújt tájékoztatást.

1.11.611

Kijavítottunk néhány hibát, amelyek összeomlást okozhattak az AVX-kompatibilis és az AVX512-kompatibilis programok rögzítésekor.

@$cursession.TTD.Calls() pontosabb paraméteradatokat ad a 32 bites assembly stubokról.

Javította az indexelő robusztusságát, amikor nagy (több tíz-száz GB) nyomkövetést indexel. Ez a fejlesztés szükségessé tette az index formátumának módosítását, ezért újra kell indexelnie a nyomkövetéseket.

Változtatott

  • Frissítse az MSDIS-t az aktuális verzióra az Intel APX támogatásának beszerzéséhez (1.11.601).
  • A folyamatok monitorozásának javítása 4 vagy 8 PID-vel (1.11.595).

Rögzített

  • XSTATE-támogatás hozzáadása a TTD CONTEXT kezeléséhez (1.11.609).
  • Kijavíthatja az MSVC (és a clang) legújabb verziójával (1.11.607) kapcsolatos problémákat.
  • Győződjön meg arról, hogy a megfelelő alapértelmezett paramétertípus-méret mindig be van állítva (1.11.593).
  • Új nyomkövetési fájlformátum futtatókörnyezet által választott oldalmérettel (1.11.592).
  • Kerülőmegoldás a(z) MSDIS (1.11.591) „REX.B + NOP” hibájára.

1.11.553

!tt az argumentumok nélkül mostantól rövid súgószöveg és az aktuális pozíció jelenik meg (a nyomkövetés elejére váltás helyett).

Az új adatmodell-módszer lehetővé teszi egy helyi változó értékeinek előzményeinek megtekintését. A Keret objektumon belül, például az aktuális keret @$curframe esetén, használhatja a .TTD.VariableHistory() metódust, hogy lekérje a változóhoz írt értékek naplóját, valamint azokat a stádiumokat, ahol a változó ezeket az értékeket tartalmazta.

  • dx -g @$curframe.TTD.VariableHistory().Variables megjeleníti a helyi változónevek listáját.
  • dx -g @$curframe.TTD.VariableHistory().Variables[n].Values A #n helyi változó előzményeit jeleníti meg.

A TTD Replay API egy kísérleti SDK-ban is elérhető. Ez az API ugyanaz az API, amelyet a hibakereső a TTD-vel való interakcióhoz használ, és amely lehetővé teszi a .Calls() / .Memory() számára az adatok hatékony gyűjtését. További információért lásd https://aka.ms/ttdsdk.

Rögzített

  • Az ErrorReporting::PrintError elavulása okozta összeomlás javítása (1.11.553)

1.11.532

Az új verzió karbantartási frissítés, amely javítja a rögzítés robusztusságát. Ez a TTD-kiadás egybeesik a Windbg 2025. júniusi kiadásával. Az egyik új funkció, hogy a Pozíció adatmodell objektum mostantól százalékos értéket jelent a nyomkövetésben.

Változtatott

  • Egyéb infrastruktúra-karbantartás.
  • Használja a C++ illékony ISO szabvány implementációját. (1.11.518)
  • Százalékonkénti érték hozzáadása a pozíció adatmodell kivetítéséhez. (1.11.514)

Rögzített

  • Növelje a TTD dekódolt utasítások kezelésének robusztusságát. (1.11.530)
  • Távolítsa el az XSAVE használatát az emulátorban, és optimalizálja a belső regiszterátvitelt. (1.11.509)

1.11.506

Ez a kiadás egy kisebb kiadás, amely egybeesik a WinDbg 2025. áprilisi kiadásával.

Változtatott

  • Ha egy TTD-pozícióra kattint az adatmodellben (például a Modulok listában) a nyomkövetésben erre a pozícióra navigál. (1.11.492)

    Megjegyzés: A parancsablak nem jeleníti meg a frissített TTD-pozíciót a következő lépés vagy futtatási parancs végrehajtásáig.

Rögzített

  • Adja hozzá a folyamat nevét a .out fájlhoz, amikor egy PID-hez csatlakozik, hogy segítse a hibaelhárítást. (1.11.486)

1.11.481

Átdolgoztuk a !tt parancsot, hogy hatékonyabban navigáljon a nyomkövetésben:

  • A tört százalékértékekkel szűkíthető a keresési terület (!tt 23,65)
  • A regiszter értékének előző/következő módosításának megkeresése (!tt br ebx)
  • Keresse meg, mikor történt a memóriatartomány előző/következő elérése (!tt ba- [addr] [tartomány])
  • Az időpont megkeresése, amikor a végrehajtás egy másik modulba lép (!tt bm)
  • Az előző/következő végrehajtási idő megkeresése egy adott modulra (!tt bm ntdll)

További információ: !tt (időutazás).

Néhány jelentős javítás:

  • "Hiba: A '64 bites érték a számra való konvertáláskor pontosságot veszít' üzenetek eltűntek, amikor a @$cursession.TTD.Data.Heap() funkciót 32 bites nyomkövetés esetén használják."
  • A segítség opció elemzése (-?, -help) mostantól helyesen észlelhető bárhol a parancssorban.
  • dx @$cursession.TTD.Calls() már nincs szükség olyan címekre, hogy megfeleljenek egy függvény elejének. Ehelyett a cím a legközelebbi egyező függvény elejére van leképezve.
  • A TTD helyesen jelenti a cél operációs rendszer verzióját a vertarget parancsból.
  • Az üzemeltetett szolgáltatásnévvel rendelkező "-monitor" használata már nem rögzíti a nem kapcsolódó üzemeltetett szolgáltatásokat.

Hozzáadva

  • Változástörési pontok regisztrálása TTD-nyomkövetésekben (1.11.431)

Változtatott

  • Szolgáltatások név szerinti rögzítésének javítása monitorozási módban (1.11.477)
  • Rögzítse a tényleges célrendszer operációsrendszer-adatait a hibakereső általi használatra (1.11.473)
  • Az XMM-regiszterek emulátor és KÖRNYEZET közötti átvitelének javítása (1.11.469)
  • A függvényen belüli címekkel kapcsolatos lekérdezések engedélyezése (1.11.459)
  • Szimbólumok támogatása címként/méretként az !tt parancssorban (1.11.454)
  • A TTD-navigációs parancsok konzisztenciájának javítása és képességeinek kiterjesztése (1.11.453)
  • A modul db-konzisztenciájának javítása sérült adatokkal szemben (1.11.430)

Rögzített

  • Folyamatnév hozzáadása a kimenethez a PID-hez való csatoláskor (1.11.486)
  • TTD. A Data.Heap() jelentése "Hiba: a 64 bites érték elveszíti a számra való konvertálás pontosságát" bizonyos esetekben (1.11.471)
  • Az árnyékveremek engedélyezése melletti folyamatrögzítés megbízhatóságának javítása (1.11.466)
  • Modulnavigáció hozzáadása !tt bm és adatmodell használatával (1.11.462)
  • Kijavítottunk néhány, a parancssori elemzéssel kapcsolatos problémát. (1.11.444)
  • Javítás a 'lodsd', duplaszó betöltése a címre (rax felső részének nullázása) (1.11.434)
  • Kijavítottunk néhány libfuzzer-hibát (1.11.433)

1.11.429

A TTD ezen frissítése néhány hibajavítást és néhány belső módosítást tartalmaz a megbízhatóság javítása érdekében.

Megjegyzés: Az 1.11.410 regressziót vezetett be az Intel/AMD LODSD utasítás emulációjában. A regresszió javítása a következő kiadásban fog érkezni.

Javítások:

  • A csomagok olvasásának robusztusságát és a megbízhatóság javítását szolgáló egyéb különféle változtatásokat végezze el.
  • Javítsa ki az AVX VBROADCAST[I/F]128 utasítás emulálásának regresszióját.
  • Javítja ki az ARM64 kivételrekord hozzáférését a Windows újabb buildjeiben.

1.11.410

Továbbfejlesztett akadálymentesség: A folyamatjelző felhasználói felülete mostantól megfelelően skálázható a szövegméret változásaival.

A @$cursession.TTD.Calls() hibakereső parancsa mostantól támogatja a sok függvénynek megfelelő helyettesítő karaktereket. Most már nagy számú függvényt lehet lekérdezni @$cursession.TTD.Calls("kernel32!*").

Automatizálás: Egy új -onMonitorReadyEvent parancssori beállítás jelzi, hogy a rögzítésfigyelő (-monitor kapcsoló) készen áll-e az új folyamatok rögzítésére.

Javítások:

  • Javítsa ki a versenyfeltételeket a rögzítő inicializálása közben.
  • Javítsa ki a syscallok rögzítésének módját, hogy a töréspontok megfelelően működhessenek.
  • A modul szelektív felvételével kapcsolatos több probléma megoldása.

ARM64-javítások:

  • Kijavítottunk egy hibát, amely megakadályozta a TTD-felvételt az egyszerű ARM64v8.0 szintű PROCESSZORokon.
  • Javította az üzenetkezelést, amikor az ARM64-en x86- vagy x64-folyamat nyomát próbálják használni.

AMD-/Intel-javítások (beleértve a Google által jelentett problémákat):

  • Kijavítottuk a LODS helytelen emulációját: Ahelyett, hogy nullázná a fel nem használt RAX-biteket, helyesen megmaradnak.
  • Kijavítottuk a "pop ax" utasítás emulációját az x86/x64 folyamatokban, amely helytelenül nullázta a teljes regiszter felső bitjeit (például a "pop ax" törölte a rax felső bitjeit).
  • Az XGETBV utasítás közvetlen emulációja (gyorsabb).
  • Az AVX512 SIMD minden lépésének közvetlen emulációja (gyorsabb).

1.11.316

Kijavítottunk egy regressziót, amely időnként összeomlást okozott, amikor hosszú, nagy adatterhelésű utasításütemezéseket tartalmazó programokat rögzített.

ARM64-javítások:

  • Mostantól támogatott a PAC-funkciót engedélyező ARM64-folyamatokban történő rögzítés.
  • Kijavítottuk az ANDS- és TST-utasításokat, amelyek nem törölték a átvitel és a túlcsordulás jelzőit.

AMD/Intel javítások:

  • Kijavítottuk azt a hibát, amely miatt a TTD helytelenül emulálta az "xchg r8,rax" és az "xchg r8w,ax" szöveget NOP-ként.

1.11.304

A TTD mostantól egy API-t implementál és tesz közzé nyilvánosan, hogy az élő rögzítési folyamaton belülről vezérelje a rögzítőt. A dokumentáció és a minta a GitHubon található.

A TTD mostantól képes önmagát beilleszteni felvétel kikapcsolt állapotában az új -recordMode kapcsoló segítségével. A TTD alapértelmezés szerint az -recordMode Automatic-t használja, ami az összes szál rögzítését okozza. Ha -recordMode Manual meg van adva, akkor a TTD injektál a célfolyamatba, de nem rögzít semmit, amíg nem utasítják erre egy API-híváson keresztül.

A rögzítés mostantól egy adott modulcsoportra korlátozható a -module kapcsolóval. Bizonyos esetekben ez a korlátozás lényegesen gyorsabb rögzítést és kisebb nyomkövetési fájlokat eredményezhet. -module Több kapcsoló is megadható.

Az egyező rekord- és visszajátszási összetevők mostantól bekerülnek a disztribúcióba. Ha a hibakereső és a parancssori rögzítő nem kompatibilis, vagy visszajátszási hiba lép fel, a visszajátszási összetevők kerülő megoldásként átmásolhatók a hibakereső telepítésébe, amíg új hibakereső nem jelenik meg.

A telepített fájl helye a PowerShellben az alábbi parancs futtatásával található:

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

Hozzáadva

  • Adjon hozzá -recordmode kapcsolót az automatikus rögzítés nélküli injektáláshoz (1.11.296)
  • -module kapcsoló hozzáadása és SR-konfiguráció létrehozása (1.11.291)
  • Futás közben az API által rögzített egyéni adatok projektálása az adatmodellbe (1.11.286)
  • Adjon hozzá egy új TTDLiveRecorder.dll-t, és kösse össze a TTDRecordCPU.dll-gyel (1.11.283)
  • Visszajátszási összetevők hozzáadása az MSIX-hez és az SDK-keresés javítása (1.11.265)

Változtatott

Nincs

Rögzített

  • Hiba megkerülése az nlohmann JSON szerializálóban, amelyet valamilyen belső eszközkészletben használnak (1.11.281)
  • Állítsa be a karakterlánc igazítását ritka CRT-hiba elkerülésére (1.11.279)
    • A VS- és operációsrendszer-kódbázisokban jelentve és javítva.
  • A Watson összeomlási jelentéseinek számos kisebb javítása (1.11.276)
  • Kijavítottuk a nyomkövetési fájl sérülését okozó regressziót (1.11.264)

Ismert problémák

  • Az ARM64-en a fordító nem tud végrehivásokat végezni több nagyfrekvenciás függvénynél, ami szélsőséges esetekben ahhoz vezethet, hogy a felvevőnek elfogy a veremterülete, és összeomlik.

1.11.261

A kiadás jelentős változásai a következők:

  • [ARM64] Kijavítottuk a SXTL, SQXTN2, SQXTUN2, UQXTN2, XTN2 és TRN1 utasítások viselkedését, amikor a célregiszter forrásként van használva.
  • [ARM64] Kijavítottunk egy hibát, amely miatt a hibakereső az alacsonyabb 64 bittel rendelkező SIMD-regisztrációkat a magas 64 bitesre duplikálta.
  • [AMD64] Az AMD Zen4 processzorainak AVX512 emulációs javításai (a regiszterek megsérülnek).

Változtatott

  • Implementáljon egy új verziószámozási rendszert, amely kifejezetten az emulátorhoz készült. (1.11.260)

Rögzített

  • Javítsa ki a hibás ARM64-utasításokat, ahol a célregisztrálás is forrásként van használva. (1.11.261)
  • Javítsa ki a Zen4-re vonatkozó megoldást az emulátorhoz való közvetlen visszatérés érdekében. (1.11.222)

1.11.202

Ez a kiadás több olyan problémát javít ki, amelyek a szolgáltatások rögzítésekor, valamint a folyamatok -monitor kapcsolón keresztüli indításának figyelésekor jelentkeztek. Emellett eltávolítja az ARM32 rögzítési támogatását a termékből.

Változtatott

  • Csökkentse a bináris méretet azáltal, hogy A TTD-összetevőket DLL-ként csatolja az UCRT-hez. (1.11.191)

Rögzített

  • A szolgáltatások rögzítésének javítása. (1.11.193)
  • A -monitor használatakor több problémát kell megoldani. (1.11.189)
  • Javítsa ki a függvény veremkeretét, amely megőrzi a nem változékonyakat, amikor x64-es tartalék mechanizmusokat futtat (1.11.188)
  • Kimeneti pufferelés újra engedélyezve a TTD-hez (1.11.187)
  • A GPO fogantyújának kezelése a ProcessMonitorServerben (1.11.179)

Eltávolított

  • ARM32 rögzítési kód eltávolítása az adattárból (1.11.198)

1.11.173

Ez a kiadás növeli bizonyos hibaüzenetek láthatóságát azáltal, hogy kinyeri őket a .out fájlból, és a konzolra nyomtatja őket. Emellett kijavít egy ritka összeomlást is a nyomkövetés visszajátszásának során.

Változtatott

  • Hibaüzenetek kinyerése és nyomtatása .out fájlból (1.11.173)

Rögzített

  • Kijavíthatja a fájlütközést, miközben a .out fájlt külön folyamatból olvassa be. (1.11.171)
  • Javítsa ki a ritka összeomlást a nyomkövetési visszajátszás során. (1.11.166)

1.11.163

Ez a kiadás támogatja az x86-folyamatok rögzítését x64-gépeken.

Változtatott

  • X86-felvétel javítása x64 TTD telepítéssel (1.11.163)

Rögzített

  • EULA-törlés (1.11.161)

1.11.159

Ez a kiadás a parancssori rögzítő első nyilvános kiadása. A parancssori rögzítő nyilvános kiadásának engedélyezéséhez szükséges számos módosítás mellett ez a kiadás több hibajavítást is tartalmaz, köztük néhány javítást a CPU-emulátorhoz.

Az új -timestampFileName kapcsoló lehetővé teszi az időbélyeg-alapú .run fájlgenerálást. Ez a kapcsoló akkor hasznos, ha ugyanazon folyamat számos példányát rögzíti, és minimalizálni szeretné a rögzítés indítási idejét.

Változtatott

  • Válassza ki az alapértelmezett injektálási módot futásidőben a nyomkövetési eszköz használata alapján (1.11.156)
  • Kapcsoló hozzáadása az időbélyeg-alapú .run fájlgenerálás engedélyezéséhez (1.11.155)
  • EULA és -accepteula hozzáadása a TTD-hez (1.11.154)
  • ProcLaunchMon.sys hozzáadása az MSIX-hez (1.11.153)
  • Ívenkénti MSIX és MSIXBUNDLE létrehozása (1.11.152)
  • Kijavíthat több hibát, amelyek a Clang használatával létrehozott TTD tesztelése során merültek fel. (1.11.146)
  • A TTDAnalyze clang-javításai (1.11.144)

Rögzített

  • Visszajelzések áttekintése az AppInstallerről / nyilvános kiadásról (1.11.159)
  • RC-visszajelzés (1.11.157)
  • A nulladik regiszter felülírásának elkerülése érdekében inicializálja a RegisterInfo-t úgy, hogy a célra mutasson. (1.11.149)
  • Azonnal javítsa ki a TST-utasítást, és javítsa ki az egységtesztet, hogy jobban lefedje azt. (1.11.148)
  • A védett folyamat döntésének konszolidálása és a védett folyamat használatának letiltása (1.11.147)

1.11.138

Változtatott

  • Rögzítő MSIX létrehozása (1.11.138)
  • Javítsa ki az összes problémát, hogy Clang felépíthesse a TTD-t. (1.11.137)
  • A -monitor X bevezetése egy folyamat rögzítésére szolgáló eszközként, amikor elindul (1.11.116)

Rögzített

  • A "CMP ZR" ARM64 emuláció javítása (1.11.128)
  • Az AVX512 emuláció javítása az AMD Zen4 processzorainál (1.11.127)
  • A TTD által egy adott cpu fájljainak megkeresésére használt mechanizmus javítása (1.11.121)
  • X86 TTD regresszió javítása (TTDRecordCPU.dll nem töltődik be) (1.11.110)
  • Javítsa ki a visszatérést a natív útvonalhoz ARM64-en, hogy ne rontsa el az X28-at (1.11.109)

Lásd még:

Time Travel Hibakeresés – Áttekintés

Időutazó hibakeresés – Parancssori rögzítő