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.
Co je ladění časového cestování?
Ladění Time Travel Debugging (TTD) je nástroj, který zachycuje sledování vašeho procesu při jeho provádění a později ho přehraje, a to jak vpřed, tak i vzad. TTD vám pomůže ladit problémy tím, že vám umožní převinout ladicí relaci, takže nemusíte problém reprodukovat, dokud nenajdete chybu.
Funkce TTD umožňuje vrátit se v čase, abyste lépe porozuměli podmínkám, které vedou k chybě, a několikrát ho přehrát, abyste se dozvěděli, jak nejlépe vyřešit problém.
TTD má výhody oproti souborům s výpisem stavu havárie, které často nedokážou zachytit stav a trasu provádění, což vede k celkovému selhání.
Pokud nemůžete zjistit problém sami, můžete trasování sdílet se spolupracovníkem, aby se mohl podívat přesně na to, co vidíte vy. Tato funkce usnadňuje spolupráci snáze než živé ladění, protože zaznamenané instrukce jsou stejné, zatímco paměťová umístění a provádění kódu se na různých počítačích liší. Můžete také sdílet konkrétní bod v čase, abyste spolupracovníkům pomohli zjistit, kde začít.
TTD je efektivní a pracuje s co nejnižší možnou výpočetní režií, protože zachycuje provádění kódu v trasovacích souborech.
TTD obsahuje sadu objektů datového modelu ladicího programu, které můžete použít k dotazování trasování pomocí LINQ. Pomocí objektů TTD můžete například vyhledat, kdy byl načten konkrétní modul kódu, nebo vyhledat všechny výjimky.
Požadavky
Ladění časového cestování je integrované s WinDbg a poskytuje bezproblémové nahrávání a přehrávání.
Pokud chcete použít TTD, musíte spustit ladicí program se zvýšenými oprávněními. Nainstalujte WinDbg pomocí účtu s oprávněními správce a použijte tento účet při ladění programu. Pokud chcete spustit ladicí program se zvýšenými oprávněními, klikněte pravým tlačítkem myši na ikonu WinDbg v nabídce Start a pak zvolte Další možnosti > Spustit jako správce.
Poznámky k vydání
TTD se stále vyvíjí. Nejnovější informace najdete v poznámkách k verzi ladění cestování časem.
Záznam může obsahovat identifikovatelné osobní údaje nebo informace související se zabezpečením.
Vytvořený trasovací soubor, který obsahuje záznam, může obsahovat osobní identifikační údaje nebo informace související se zabezpečením, a to včetně, ale nemusí se nutně omezovat na cesty k souborům, registr, paměť nebo obsah souborů. Přesné informace závisí na aktivitě cílového procesu, když byla zaznamenána. Buďte si toho vědomi při sdílení nahrávkových souborů s ostatními.
nástroj pro záznam příkazového řádku TTD.exe
Kromě záznamu trasování v uživatelském rozhraní WinDbg je k dispozici nástroj příkazového řádku TTD.exe pro záznam trasování.
Můžete mít scénáře, kdy se vyžaduje pouze záznam příkazového řádku TTD: nahrávání do počítače bez instalace ladicího programu, pokročilých scénářů nahrávání, automatizace testů atd. V těchto scénářích můžete nainstalovat pouze záznam příkazového řádku TTD prostřednictvím adresy URL. Podrobnosti naleznete v tématu Ladění časového cestování - nástroj příkazové řádky TTD.exe.
Porovnání nástrojů ladění
Tato tabulka shrnuje výhody a nevýhody různých řešení ladění dostupných.
| Přístup | Výhody | Nevýhody |
|---|---|---|
| Živé ladění | Interaktivní prostředí, vidí tok provádění, může změnit cílový stav, známý nástroj ve známém nastavení. | Naruší uživatelské prostředí, může vyžadovat úsilí k opakovanému reprodukci problému, může mít vliv na zabezpečení, ne vždy možnost v produkčních systémech. Je obtížné zpětně pracovat od bodu selhání a určit příčinu. |
| Skládky (assuming "dumps" refers to places like landfills) | Žádné programování předem, nízká dotěrnost, založené na spouštěčích. | Následné snímky nebo živé výpisy stavu poskytují jednoduchý pohled na vývoj v čase. Náklady na režii jsou v podstatě nulové, pokud se nepoužívají. |
| Telemetrické protokoly & | Jednoduché, často vázané na obchodní scénáře / akce uživatelů, vhodné pro strojové učení. | Problémy vznikají v neočekávaných cestách kódu (bez telemetrie). Nedostatek hloubky dat, staticky zkompilovaná do kódu. |
| Ladění cestování časem (TTD) | Skvělé při složitých chybách, bez počátečního kódování, opakovatelné offline ladění, přátelské pro analýzu, zachycuje všechno. | Velké režijní náklady za rekordní čas. Může shromažďovat další potřebná data. Datové soubory se můžou stát velkými. |
Školicí video
Další informace o TTD najdete v těchto videích.
Defrag Tools 185 - Ivette a JamesP projdou základy TTD a předvedou některé funkce v WinDbg
Defrag Tools 186 - Jordi a JCAB předvádí více skvělých funkcí TTD v WinDbg
CppCon (YouTube) - Jordi, Ken a JamesM představil TTD v WinDbg na CppCon 2017
Základy trasování souborů
Velikost trasovacího souboru
Trasovací soubor může být velký. Musíte se ujistit, že je k dispozici dostatek volného místa. Pokud program zaznamenáte i několik minut, trasovací soubory se můžou rychle zvětšit na několik gigabajtů. Funkce TTD nenastavuje maximální velikost trasovacích souborů tak, aby umožňovala složité dlouhotrvající scénáře. Při rychlém opětovném vytvoření problému zůstane velikost trasovacího souboru co nejmenší.
Trasování a indexování souborů
Trasovací soubor (.run) ukládá provádění kódu během nahrávání.
Když záznam zastavíte, systém vytvoří indexový soubor (.idx) pro optimalizaci přístupu k informacím o trasování. WinDbg také automaticky vytvoří indexové soubory při otevření trasovacích souborů.
Indexové soubory můžou být velké, obvykle dvakrát tak velké jako trasovací soubor.
Indexový soubor můžete znovu vytvořit z trasovacího souboru pomocí příkazu !tt.index.
0:000> !tt.index
Successfully created the index in 10ms.
Chyby záznamu a výstupy dalších záznamů jsou zapisovány do souboru protokolu WinDbg.
Všechny výstupní soubory uložíte do umístění, které nakonfigurujete. Výchozí umístění je ve složce dokumentu uživatele. Například pro User1 se soubory TTD ukládají tady:
C:\Users\User1\Documents
Další informace o práci s trasovacími soubory naleznete v tématu Ladění cesty času – Práce s trasovacími soubory.
Na co si dát pozor
Nekompatibilita antiviru
Můžete narazit na nekompatibility, protože TTD se připojí k procesům, které je mají zaznamenat. Obvykle dochází k problémům s antivirovým nebo jiným systémovým softwarem, který se pokouší sledovat a stínovat volání paměti systému. Pokud narazíte na problémy s nahráváním, například zprávou o nedostatečném oprávnění, zkuste dočasně zakázat jakýkoli antivirový software.
Další nástroje, které se pokoušejí blokovat přístup k paměti, mohou být také problematické. Například Microsoft Enhanced Mitigation Experience Toolkit, sada nástrojů pro zmírnění rizik.
Dalším příkladem prostředí, které je v konfliktu s TTD, je architektura aplikace Elektron. V takovém případě může trasování zaznamenat, ale je také možné zaznamenat zablokování nebo chybové ukončení procesu.
Pouze uživatelský režim
TTD v současné době podporuje pouze operaci uživatelského režimu, takže nemůžete trasovat proces režimu jádra.
Přehrávání jen pro čtení
Můžete cestovat zpět v čase, ale nemůžete změnit historii. Můžete použít příkazy pro čtení paměti, ale nemůžete použít příkazy, které upravují nebo zapisuje do paměti.
Procesy chráněné systémem
Některé procesy chráněné systémem Windows, jako je proces PPL (Protected Process Light), jsou chráněné. TTD se nemůže vložit do chráněného procesu, aby se umožnil záznam spuštění kódu.
Dopad nahrávání na výkon
Záznam aplikace nebo procesu ovlivňuje výkon počítače. Skutečné režijní náklady na výkon se liší v závislosti na množství a typu kódu, který se spouští během nahrávání. V typických scénářích nahrávání můžete očekávat snížení výkonu přibližně 10 až 20krát. Někdy se v uživatelském rozhraní nezobrazuje znatelné zpomalení. U operací náročných na prostředky, jako je například dialogové okno Otevřít soubor, se ale zobrazí dopad nahrávání.
Chyby trasování souborů
Může dojít k chybám v souborech. Další informace naleznete v tématu ladění Time Travel – řešení potíží.
Pokročilé funkce ladění časových cest
Časové osy
Časové osy představují vizuální znázornění událostí, ke kterým dochází během provádění. Tyto události mohou být místem výskytu událostí jako jsou: zarážky, čtení a zápisy paměti, volání a návraty funkcí a výjimky. Další informace o časových osách najdete v tématu WinDbg – časové osy.
Podpora datového modelu ladicího programu
-
podpora integrovaného datového modelu – TTD zahrnuje podporu datového modelu. Použití dotazů LINQ k analýze selhání aplikace může být výkonným nástrojem. Okno datového modelu ve WinDbg můžete použít k práci s rozšiřitelnou a brožovatelnou verzí
dxadx -gumožňuje vytvářet tabulky pomocí dotazů NatVis, JavaScript a LINQ.
Obecné informace o datovém modelu debuggeru najdete v tématu WinDbg – datový model. Informace o použití objektového modelu ladicího nástroje TTD naleznete v tématu Úvod k objektům Time Travel Debugging.
Podpora skriptování
- Automatizace skriptování – Podpora skriptování pro JavaScript a NatVis umožňuje snadnou automatizaci řešení problémů. Další informace naleznete v tématu Time Travel Debugging - JavaScript Automation.
Obecné informace o práci s JavaScriptem a NatVis naleznete v části WinDbg – skriptování.
nástroj příkazového řádku TTD.exe
K dispozici je nástroj příkazového řádku TTD.exe pro záznam trasování. Podrobnosti naleznete v tématu Ladění časového cestování - nástroj příkazové řádky TTD.exe.
Podpora spravovaného kódu TTD
K ladění spravovaného kódu pomocí TTD v WinDbg můžete použít rozšíření ladění SOS (sos.dll) spuštěné v 64bitovém režimu. Další informace naleznete v tématu Ladění spravovaného kódu pomocí ladicího programu systému Windows.
Začínáme s TTD
Začněte tady
Pokud s TTD začínáte, postupujte podle tohoto studijního programu:
- Zaznamenat trasu – Zachytit první trasu spuštění
- Přehrání stopy – Navigace a analýza záznamu
- Prohlídka ukázkové aplikace – příklad ladění krok za krokem
Potřebujete pomoc?
- Práce se soubory trasování – Správa a optimalizace trasovacích souborů
- Řešení potíží – Řešení běžných problémů
Rozšířené funkce
- Objekty ladicího programu TTD – trasování dotazů pomocí LINQ
- Automatizace JavaScriptu – Automatizace vyšetřování problémů