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.611
Opravili jsme několik problémů, které mohly způsobit chybové ukončení při nahrávání programů s podporou AVX a AVX512.
@$cursession.TTD.Calls() uvádí přesnější informace o parametrech pro 32bitové stuby assembleru.
Zlepšili jsme robustnost indexeru při indexaci velkých tras (o velikosti desítek až stovek GB). Toto vylepšení vyžadovalo změnu formátu indexu, takže musíte znovu zaindexovat trasování.
Změněno
- Aktualizujte MSDIS na aktuální verzi a získejte podporu Intel APX (1.11.601).
- Oprava monitorování procesů pomocí PID 4 nebo 8 (1.11.595).
Pevný
- Přidání podpory XSTATE do zpracování kontextu TTD (1.11.609)
- Opravte problémy s nejnovější verzí MSVC (a clang) (1.11.607).
- Ujistěte se, že je vždy nastavena správná výchozí velikost typu parametru (1.11.593).
- Nový formát trasovacího souboru s velikostí stránky zvolenou modulem runtime (1.11.592).
- Obejít chybu „REX.B + NOP“ v MSDIS (1.11.591).
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)