Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Toto téma obsahuje informace o novinkách v ladění časových cest.
1.11.553
!tt bez argumentů teď zobrazuje krátký text nápovědy a aktuální pozici (místo přechodu na začátek trasování).
Nová metoda datového modelu umožňuje zobrazit historii hodnot místní proměnné. V rámci objektu Frame, například @$curframe pro aktuální rámec, můžete použít . TTD. VariableHistory() pro získání protokolu hodnot zapsaných do proměnné a rozsahu pozic, které proměnná držela.
-
dx -g @$curframe.TTD.VariableHistory().Variableszobrazí seznam názvů místních proměnných. -
dx -g @$curframe.TTD.VariableHistory().Variables[n].Valueszobrazí historii místních proměnných #n.
Rozhraní API pro přehrání TTD je také k dispozici v SDK pro experimentální použití. Toto API je stejné rozhraní, které ladicí program používá k interakci s TTD, a které umožňuje funkcím .Calls() / .Paměť() efektivně shromažďovat data. Další informace najdete v tématu https://aka.ms/ttdsdk.
Pevný
- Oprava chyby způsobené vyřazením
ErrorReporting::PrintError(1.11.553)
1.11.532
Tato verze je údržbová verze, která vylepšuje stabilitu záznamu. Tato verze TTD se shoduje s verzí Windbg z června 2025. Novou funkcí je, že objekt datového modelu Position nyní zaznamenává procento do trasování.
Změněno
- Různá údržba infrastruktury.
- Použijte standardní implementaci standardu ISO nestálého jazyka C++. (1.11.518)
- Přidejte procenta do projekce datového modelu pro pozice. (1.11.514)
Pevný
- Zvyšte robustnost zpracování dekódovaných instrukcí TTD. (1.11.530)
- Odeberte použití XSAVE v emulátoru a optimalizujte interní přenos registru. (1.11.509)
1.11.506
Tato verze je menší aktualizací, která se shoduje s vydáním WinDbg z dubna 2025.
Změněno
Kliknutím na pozici TTD v datovém modelu (například v seznamu Moduly) přejdete na danou pozici v trasování. (1.11.492)
Poznámka: V příkazovém okně se nezobrazí aktualizovaná pozice TTD, dokud se neprovede další krok nebo spuštění příkazu.
Pevný
- Přidání názvu procesu do souboru .out při připojování k PID pro účely řešení potíží (1.11.486)
1.11.481
Přepracovali jsme příkaz !tt, abychom vám poskytli výkonnější způsoby navigace skrz váš sled:
- Procento zlomků se dá použít k zúžení vyhledávacího prostoru (!tt 23,65)
- Najít předchozí/další čas, kdy se změní hodnota registru (!tt br ebx)
- Najít předchozí/další čas, kdy je přistupováno k rozsahu paměti (!tt ba- [addr] [range])
- Najděte předchozí/další čas, kdy se spuštění přechodí do jiného modulu (!tt bm)
- Najděte předchozí/následující okamžik, kdy se vykonávání přesune do konkrétního modulu (!tt bm ntdll)
Další informace naleznete v tématu !tt (časová cesta).
Některé významné opravy:
- "Chyba: zprávy „64-bitová hodnota ztrácí přesnost při převodu na číslo“ při použití
@$cursession.TTD.Data.Heap()na 32bitovém trasování zmizely." - Analýza možností nápovědy (
-?,-help) je nyní správně rozpoznána kdekoli v příkazovém řádku. -
dx @$cursession.TTD.Calls()už nevyžaduje, aby adresy odpovídaly začátku funkce. Místo toho se adresa mapuje na začátek nejbližší odpovídající funkce. - Příkaz TTD správně hlásí cílovou verzi operačního systému z příkazu vertarget.
- Použití "-monitor" s názvem hostované služby už nezaznamená nesouvisející hostované služby.
Přidáno
- Registrace zarážek změn v trasování TTD (1.11.431)
Změněno
- Oprava záznamu služeb podle názvu pomocí režimu monitorování (1.11.477)
- Zachycení informací o operačním systému skutečného cílového systému pro použití ladicím programem (1.11.473)
- Oprava přenosu registrů XMM mezi emulátorem a KONTEXTem (1.11.469)
- Povolit volání dotazů na adresy uvnitř funkce (1.11.459)
- Podpora symbolů jako adresy/velikosti v příkazovém řádku !tt (1.11.454)
- Vylepšení konzistence a rozšíření možností navigačních příkazů TTD (1.11.453)
- Vylepšení konzistence databáze modulů v tvář poškozeným datům (1.11.430)
Pevný
- Přidání názvu procesu do výstupu při připojování k PID (1.11.486)
- TTD. Data.Heap() hlásí "Chyba: 64bitová hodnota ztratí přesnost při převodu na číslo" v některých případech (1.11.471)
- Zlepšení spolehlivosti nahrávání procesu s povolenými stínovými zásobníky (1.11.466)
- Přidání navigace modulu pomocí !tt bm a datového modelu (1.11.462)
- Opravte některé problémy s analýzou příkazového řádku. (1.11.444)
- Oprava lodsd, načtení dvojslova na adrese (vynulování horní části registru rax) (1.11.434)
- Oprava některých chyb knihovny libfuzzer (1.11.433)
1.11.429
Tato aktualizace TTD obsahuje několik oprav chyb spolu s některými interními změnami, které zlepšují spolehlivost.
Poznámka: 1.11.410 zavedla regresi v emulaci instrukce Intel/AMD LODSD. Oprava této regrese přijde v příští verzi.
Stanovuje:
- Vylepšení odolnosti při čtení paketů a další různorodé změny ke zlepšení spolehlivosti
- Opravte regresi při emulaci instrukce AVX VBROADCAST[I/F]128.
- Opravte přístup k záznamům o výjimce v ARM64 v novějších buildech Windows.
1.11.410
Vylepšená přístupnost: Uživatelské rozhraní Progress UI se teď správně škáluje se změnami velikosti textu.
Příkaz @$cursession.TTD.Calls() v ladicím nástroji teď podporuje zástupné znaky, které odpovídají velkému počtu funkcí.
Teď je možné zadat dotaz na velký počet funkcí (@$cursession.TTD.Calls("kernel32!*")).
Automatizace: Nová -onMonitorReadyEvent možnost příkazového řádku označuje, kdy je monitor záznamu (-monitor přepínač) připravený k zaznamenání nových procesů.
Stanovuje:
- Opravte některé podmínky časování při inicializaci záznamu.
- Opravte způsob záznamu syscalls, aby přerušovací body fungovaly správně.
- Opravte několik problémů souvisejících se selektivním záznamem modulu.
Úpravy ARM64:
- Opravili jsme chybu, která bránila záznamu TTD na prostých procesorech ARM64v8.0.
- Vylepšili jsme hlášení chyb při pokusu o použití trasování procesu x86 nebo x64 na ARM64.
Opravy AMD/Intel (včetně některých problémů hlášených Googlem):
- Opravili jsme nesprávnou emulaci LODS: Místo vynulování nepoužívaných bitů RAX nyní jsou správně zachovány.
- Byla opravena emulace instrukce pop ax v procesech x86/x64, která nesprávně nulovala horní bity úplného registru (například pop ax vymaže horní části raxu).
- Přímá emulace instrukce XGETBV (rychlejší).
- Přímá emulace všech pohybů AVX512 SIMD (rychlejší).
1.11.316
Opravili jsme regresi, která způsobovala občasné chybové ukončení při záznamu programů s dlouhou nepřerušovanou instrukční sekvencí náročných na data.
Úpravy ARM64:
- Nahrávání v procesech ARM64, které mají povolenou funkci PAC, je nyní podporováno.
- Opravili jsme instrukce ANDS a TST, které nevymazávaly příznaky přenosu a přetečení.
Opravy AMD/Intel:
- Opravili jsme chybu, kdy TTD nesprávně emuloval xchg r8, rax a xchg r8w, ax jako NOP.
1.11.304
TTD nyní implementuje a veřejně publikuje rozhraní API pro řízení nahrávače během procesu živého nahrávání. Dokumentaci a ukázku najdete na GitHubu.
TTD se nyní může spustit i s vypnutým záznamem pomocí nového přepínače -recordMode. TTD ve výchozím nastavení používá -recordMode Automatic, což způsobí zaznamenání všech vláken. Pokud je zadáno -recordMode Manual, TTD se vloží do cílového procesu, ale nic nezaznamená, dokud k tomu nebude vyzváno prostřednictvím volání API.
Záznam je teď možné omezit na konkrétní sadu modulů pomocí -module přepínače. V některých scénářích může toto omezení vést k podstatně rychlejšímu nahrávání a menším trasovacím souborům. Může být zadáno více než jeden -module přepínač.
V distribuci jsou nyní zahrnuty komponenty pro záznam a přehrávání. V případě nekompatibility mezi ladicím programem a rekordérem příkazového řádku nebo chybě při přehrávání lze komponenty přehrávání zkopírovat do ladicího programu jako dočasné řešení, dokud nebude vydán nový ladicí program.
Umístění nainstalovaného souboru najdete v PowerShellu spuštěním následujícího příkazu:
ls (Get-AppxPackage | where Name -eq 'Microsoft.TimeTravelDebugging').InstallLocation
Přidáno
- Přidání přepínače -recordmode pro povolení injektáže bez automatického záznamu (1.11.296)
- Přidejte přepínač -module a použijte ho k vytvoření SR konfigurace (1.11.291)
- Zaznamenávání uživatelských dat pomocí API během procesu do datového modelu (1.11.286)
- Přidejte nový TTDLiveRecorder.dll a připojte ho spolu s TTDRecordCPU.dll (1.11.283)
- Přidání komponent pro opětovné přehrání do MSIX a oprava vyhledávání SDK (1.11.265)
Změněno
Žádná
Pevný
- Alternativní řešení chyby v serializátoru JSON nlohmann, který se používá v některých interních nástrojích (1.11.281)
- Přispěli jsme k opravě této knihovny, která bude dostupná v budoucí verzi.
- Přizpůsobte zarovnání řetězce, aby se zabránilo vzácné chybě CRT (1.11.279)
- Hlášeno a opraveno v kódových základnách Visual Studio a operačního systému.
- Několik malých oprav ze zpráv o chybách programu Watson (1.11.276)
- Oprava regrese, která může v některých případech způsobit poškození trasovacího souboru (1.11.264)
Známé problémy
- Na ARM64 kompilátor nedokáže probůlat více vysokofrekvenčních funkcí, což může v extrémních případech způsobit, že zapisovači dojde místo na zásobníku a dojde k chybě.
1.11.261
Mezi velmi vhodné změny v této verzi patří:
- [ARM64] Opravili jsme chování instrukcí
SXTL,SQXTN2,SQXTUN2,UQXTN2,XTN2aTRN1při použití cílového registru jako zdroje. - [ARM64] Opravili jsme problém, který způsoboval, že ladicí program zobrazoval registry SIMD s nižšími 64 bity duplikovanými do vysokých 64 bitů.
- [AMD64] Opravy emulace AVX512 pro procesory AMD Zen4 (registry byly poškozeny).
Změněno
- Implementujte nový systém správy verzí speciálně pro emulátor. (1.11.260)
Pevný
- Opravte chybné pokyny ARM64, kde se cílový registr používá také jako zdroj. (1.11.261)
- Opravte alternativní řešení Zen4 pro přímé návraty do emulátoru. (1.11.222)
1.11.202
Tato verze řeší několik problémů, ke kterým došlo při nahrávání služeb nebo spuštění procesu monitorování prostřednictvím -monitor přepínače. Zároveň z produktu odebere podporu nahrávání ARM32.
Změněno
- Zmenšete binární velikost propojením komponent TTD s UCRT jako knihovnou DLL. (1.11.191)
Pevný
- Opravit zaznamenávání služeb (1.11.193)
- Opravte několik problémů při použití nástroje -monitor. (1.11.189)
- Oprava rámce zásobníku funkce, která zachovává nevolatilní registry při spouštění záložních operací na platformě x64 (1.11.188)
- Znovu povoleno ukládání výstupu do vyrovnávací paměti pro TTD (1.11.187)
- Opravit zpracování popisovače skupinových politik v ProcessMonitorServeru (1.11.179)
Odstraněno
- Odebrání kódu záznamu ARM32 z úložiště (1.11.198)
1.11.173
Tato verze zvyšuje viditelnost určitých chybových zpráv tím, že je extrahuje ze souboru .out a vytiskne je do konzoly. Opravuje také vzácné selhání během přehrávání trasových záznamů.
Změněno
- Extrahování a tisk chybových zpráv ze souboru .out (1.11.173)
Pevný
- Opravte konflikt souborů při čtení souboru .out z samostatného procesu. (1.11.171)
- Oprava vzácného výpadku během přehrávání sledování (1.11.166)
1.11.163
Tato verze přidává podporu pro zaznamenávání procesů x86 na počítačích x64.
Změněno
- Opravit nahrávání x86 při instalaci x64 TTD (1.11.163)
Pevný
- Vyčištění EULA (1.11.161)
1.11.159
Tato verze je první veřejnou verzí záznamu příkazového řádku. Kromě několika změn potřebných k povolení veřejné verze záznamu příkazového řádku obsahuje tato verze také několik oprav chyb, včetně několika oprav emulátoru procesoru.
Nový -timestampFileName přepínač umožňuje generování souboru .run založené na časovém razítku. Tento přepínač je užitečný, když nahráváte mnoho instancí stejného procesu a chcete minimalizovat dobu spuštění záznamu.
Změněno
- Zvolte výchozí režim injektáže za běhu na základě toho, který tracer se používá (1.11.156)
- Přidání přepínače pro povolení generování souboru .run založeného na časovém razítku (1.11.155)
- Přidejte EULA a
-accepteulado TTD (1.11.154) - Přidání ProcLaunchMon.sys do MSIX (1.11.153)
- Vytvoření MSIX a MSIXBUNDLE pro každou architekturu (1.11.152)
- Opravte několik problémů, které se objevily při testování TTD vytvořené pomocí jazyka Clang. (1.11.146)
- Opravy jazyka Clang pro TTDAnalyze (1.11.144)
Pevný
- Přečtěte si zpětnou vazbu k instalaci aplikací / veřejné verzi (1.11.159)
- Zpětná vazba RC (1.11.157)
- Vyhněte se poškození nulového registru inicializací RegisterInfo tak, aby odkazovalo na jímku. (1.11.149)
- Opravte instrukce TST okamžitě a vylepšete test jednotek tak, aby ho pokrývala a další. (1.11.148)
- Konsolidace rozhodnutí o chráněném procesu a zakázání použití chráněných procesů (1.11.147)
1.11.138
Změněno
- Vytvořte MSIX záznamníku (1.11.138)
- Opravte všechny problémy, aby jazyk Clang mohl sestavit TTD. (1.11.137)
- Zavedení -monitor X jako způsob, jak zaznamenat proces při spuštění (1.11.116)
Pevný
- Oprava emulace ARM64 CMP ZR (1.11.128)
- Oprava emulace AVX512 na procesorech Zen4 AMD (1.11.127)
- Oprava mechanismu, který TTD používá k vyhledání souborů pro konkrétní procesor (1.11.121)
- Oprava regrese TTD x86 (TTDRecordCPU.dll se nepodařilo načíst) (1.11.110)
- Oprava návratu k nativní cestě v ARM64, aby se nepoškodil X28 (1.11.109)