Číst v angličtině

Sdílet prostřednictvím


Poznámky k vydání

logo WinDbg s lupou, která kontroluje bity.

Toto téma obsahuje informace o novinkách ve WinDbg. Starší verze byly vydány jako WinDbg Preview.

1.2502.25002.0

Nové funkce

IntelliSense v okně příkazů

Příkazový vstupní řádek automaticky zobrazí navrhované dokončení, když je první zadaný znak . (tečka), ! (bang) nebo $ (dollarsign). Návrhy je možné vyvolat také pomocí klávesové zkratky Ctrl + Space

Ladění snímků

Při ladění živých procesů místněmůže ladicí program pořizovat snímky procesu a přepínat mezi snímky a živým procesem prostřednictvím ikon na kartě "Rozšíření". Ladicí program se může připojit ke snímku procesu, aniž by ho pozastavil, prostřednictvím řetězce protokolu snapshot:pid=<process pid in hex> v části "Připojení ke vzdálenému ladicímu programu".

Nová rozhraní API datového modelu

  • Debugger.Utility.Symbols.GetTypeInformation

Vrátí informace o typu spojené s libovolným vloženým objektem. Existuje volitelný argument, který umožňuje automatické dereferencování (jednu úroveň) ukazatelů, pokud opravdu chcete typ pod libovolným ukazatelem (nebo odkazem).

  • Debugger.Utility.Control.CreateStepFilter(<Type>, <Pattern>)

Vytvoří nový filtr kroku. Je v tomto jmenném prostoru vedle všech rozhraní API pro vytvoření zarážek.

  • Debugger.State.StepFilters

Vrátí seznam filtrů kroků s vlastnostmi ID, Popis, Typ, Vzor a IsEnabled. Existuje metoda .Remove() pro objekty filtru kroku.

Vylepšené prostředí ladění CLR bez clrcomposition.dll

Redistribuovatelná komponenta dbgeng.dll nyní má vylepšenou podporu procházení zásobníku pro snímky CLR, aniž by bylo nutné, aby clrcomposition.dll byla přítomna.

Náhodná vylepšení

  • Lepší podpora ladění jádra Linuxu (zejména pro jádra 6.11 nebo novější)
  • Podpora komprimovaných stránek KDUMP ZSTD

Opravy chyb

  • Aktualizujte SOS na verzi 9.0.557512.
  • Opravili jsme regresi výkonu při kontrole odvolaných podpisů při načítání msdia140.dll.
  • Opravili jsme chybu při čtení kontextu XSTATE.
  • Opraveno zobrazení deaktivované zarážky v okně disassemblování, aby se odlišila od aktivované zarážky.
  • Opraven pád při zavírání plovoucího okna nástroje
  • Opravili jsme problém, kdy se po otevření nedávného trasování někdy nezobrazí aktuální pozice v okně Časových os.
  • Opravili jsme problém v oknech disassembly a paměti, které se někdy neaktualizovaly po zadání nové hodnoty.
  • Opravili jsme barevné schéma záhlaví v tmavém motivu.
  • Opravili jsme zobrazení odložených zarážek v okně Zarážky, kde umístění zobrazovalo 0x0 místo původního výrazu zadaného při jeho vytvoření. Kromě toho má jedinečnou ikonu označující, že není svázaná.
  • Opravili jsme problém v panelech Místní/Okno hodinek, kdy při kliknutí pravým tlačítkem na viditelnou položku došlo k posunutí zobrazení nahoru.
  • Opravili jsme problémy s natvisem, viz původní zprávu o chybě a.
  • Oprava spamu ladicího programu kd se zprávou Error getting port connector information, viz původní zprávy o chybách.
  • Opravili jsme problém, kdy gc aktivovala podmíněné zarážky, když byla podmínka nesplněna.
  • Registry YMM a ZMM lze nyní zobrazit při ladění trasování TTD.

Opravy přístupnosti

  • Vylepšená navigace pomocí klávesnice pro okna Místní hodnoty, Sledování a Zarážky.
  • Vylepšili jsme vizuální čitelnost oken pásu karet, místních hodnot, kukátek a zarážek.
  • Vylepšená použitelnost čteček obrazovky v oknech Místní proměnné, Sledování a Zarážky
  • Úpravy položek v lokálních proměnných, sledování a bodech přerušení budou udržovat předchozí zaměření klávesnice, výběr a posouvání, pokud je to možné.
  • Vylepšená obecná podpora škálování textu systému Windows

Obecná vylepšení uživatelského rozhraní

  • Byl přidán příkaz pro přesunutí fokusu mezi textovým polem pro zadávání příkazů a podoknem pro výstup příkazů, s přepínáním režimu značky, jako je příkazový řádek. Zástupce je Ctrl + M
  • Přidána položka místní nabídky Přejít na dekompilaci do okna Zarážky.
  • Přidání místní nabídky do okna Disassembleru pro příkazy Spustit do instrukce, Nastavit ukazatel instrukce, Přejít na zdrojový kód, Přepnout stav zarážky, Přepnout aktivaci zarážky

Ladění cestování časem (TTD)

1.2410.11001.0

Zásadní změna

  • dbghelp.dll dynamicky odkazuje na msdia140.dll. To by mělo mít vliv pouze na nástroje, které redistribuují dbghelp.dll bez zahrnutí msdia140.dll. Všimněte si, že msdia140.dll je součástí balíčků NuGet, které zahrnují dbghelp.dll.

Opravy chyb

  • Opravili jsme problém, kdy aliasy funkcí galerie rozšíření nebyly svázané s triggery načítání.
  • Nepřerušujte úložiště symbolů, když je přijata chyba ERROR_INTERNET_SECURITY_CHANNEL
  • Byl opraven problém, kdy nebylo možné v příkazovém okně zadat zpětné lomítko pro jiná než anglická rozložení klávesnice.
  • Opravili jsme problém, kdy se textové pole pro úpravy v oknech Breakpoints, Locals a Watch neposouvá na kurzor, pokud je text delší než sloupec, ve kterém se nachází.
  • U výpisů paměti CAB nebo ZIP upřednostněte *.dmp (jedna tečka) před *.*.dmp (dvě tečky)

Opravy přístupnosti

  • Přizpůsobení velikosti sloupců pomocí klávesnice bylo opraveno pro okna Sledování a Místní.
  • Vylepšená navigace pomocí klávesnice v systému WinDbgX

1.2409.17001.0

Opravy přístupnosti

Opravili jsme několik problémů při interakci s WinDbg pomocí čtečky obrazovky.

Opravy chyb

  • Opravili jsme problém, kdy odinstalace WinDbgX bránila spuštění klasického WinDbg.
  • Opravili jsme problém, kdy se WinDbgX při spuštění změnil velikost.

Ladění cestování v čase (TTD)

  • Aktualizováno na verzi 1.11.429.
  • Další podrobnosti naleznete v poznámkách k vydání TTD .

1.2407.24003.0

Nové funkce

Nový zprostředkovatel skriptování JavaScriptu

Nyní dodáváme nového zpětně kompatibilního poskytovatele JavaScriptu založeného na verzi V8. V důsledku toho teď hostitelé arm64 můžou používat rozšíření JavaScriptu. Uživatelské rozhraní arm64 teď také ve výchozím nastavení odkazuje na modul arm64.

Ve všech architekturách je ve výchozím nastavení povolený nový zprostředkovatel. Na platformě x86 a x64 se může zapnout nebo vypnout pomocí příkazů .veighton a .veightoff. Někdy v budoucnosti budou tyto příkazy a zastaralý zprostředkovatel JavaScriptu odebrány.

Rozšíření ladicího programu s manifesty galerie rozšíření teď můžou přidat ikony na novou kartu Rozšíření na pásu karet WinDbg. Po kliknutí na tyto ikony se aktivuje vizualizace daného dotazu datového modelu. Tento způsob rozšíření se provádí přidáním zobrazení do manifestu galerie rozšíření. Zobrazení propojí spojení názvu a ikony s dotazem datového modelu a druhem zobrazení. Dokumentaci najdete v dokumentaci k manifestu Galerie rozšíření

Rozšíření galerie se teď dá podmíněně načíst na základě konkrétních hodnot parametrů výjimky. Podrobnosti najdete v dokumentaci k manifestu galerie rozšíření .

Možnost konfigurace, která nikdy nestahuje konkrétní symboly

Teď můžete přeskočit stahování symbolů pro zadané obrázky.

V části Symbols konfiguračního souboru DbgX.xml můžete přidat seznam symbolů:

XML
<Namespace Name="DisabledSymbolsDownload">
  <Setting Name="MSEdge.dll" Type="VT_BSTR" Value=""></Setting>
</Namespace>

V ladicím programu můžete spustit dx Debugger.Settings.Symbols.DisabledSymbolsDownload a zobrazit aktuální seznam symbolů, které nejsou stahovány.

Seznam můžete také změnit přímo z ladicího programu takto:

dx @$curprocess.Modules[1].DisableSymbolDownload()
dx @$curprocess.Modules[1].EnableSymbolDownload()

Při ladění problémů se stahováním zdrojů na základě vloženéhoSourceLink teď můžete pomocí příkazu !lmsourcesinfo module zobrazit obsah sourcelinku, který bude ladicí program používat.

Obecná vylepšení uživatelského rozhraní

Provedli jsme několik malých vylepšení oken, jako je okno modulů nebo okno zásobníku:

  • Zobrazení mřížky teď můžete seřadit kliknutím na sloupec záhlaví.
  • K dispozici jsou další akce kliknutí pravým tlačítkem myši.
  • V okně zásobníku se zobrazují rámce jako vložené, pokud je to vhodné.

Opravy chyb

  • Opravili jsme problém, kdy se soubory PDB větší než 4 GB nestáhly přes HTTP.
    • Edge je příkladem takového souboru PDB.
  • Opraven problém s ukládáním do mezipaměti ve zprostředkovateli přihlašovacích údajů ladicího programu (nyní bude ukládat přihlašovací údaje do mezipaměti pro každý web).
  • Opravili jsme chyby při vyhodnocování triggerů načítání galerie rozšíření.
  • Opravili jsme chybu s !address, která mohla způsobit pád aplikace.
  • !heap -a -a by teď mělo fungovat.

TTD

Viz poznámky k vydání TTD pro verzi 1.11.410.

1.2402.24001.0

Nové funkce

Živé ladění Linuxu

Teď můžete živě ladit proces Linuxu. Další informace najdete v těchto tématech:

ladění živého vzdáleného procesu Linuxu

symboly a zdroje Linuxu

Klient WinDbg v dohledné budoucnosti bude nadále vyžadovat Windows, protože WinDbg neběží v Linuxu.

Zaznamenat podmnožinu spuštění pomocí ladění časového cestování

Teď můžete zadat seznam modulů, které se mají zaznamenávat, abyste mohli zaměřit TTD na moduly, o které vám záleží. To může výrazně snížit režijní náklady na nahrávání. Chcete-li toto použít, jednoduše zaškrtněte "Zaznamenat podmnožinu spuštění" v dialogovém okně "Konfigurovat a zaznamenat" a zadejte moduly, které chcete zaznamenat. (viz známé problémy níže).

Pro jemné ovládání můžete přesně nahrát program pomocí nového rozhraní API pro záznam v procesu. Podívejte se, jak s využitím ukázkového kódu a dokumentace .

Kompaktní okno registru

Nové okno registru vypadá stejně jako výstup příkazu r. Upozorňujeme, že úpravy z nového okna registru se zatím nepodporují.

Nové parametry pro příkazy e (Zadat hodnoty) do paměti

Příkazy e (Enter Values) do paměti teď podporují fyzické adresy stejně jako příkazy d (Zobrazit paměť). Všimněte si, že tyto možnosti jsou podporovány pouze v režimu jádra:

Možnost Popis
/p Používá adresy fyzické paměti pro displej. Rozsah určený rozsahem bude převzat z fyzické paměti, nikoli z virtuální paměti.
/p[c] Stejné jako /ps tím rozdílem, že se bude číst paměť uložená v mezipaměti. Hranaté závorky kolem c musí být zahrnuty.
/p[uc] Stejné jako /ps tím rozdílem, že bude načtena paměť bez mezipaměti. Hranaté závorky kolem uc musí být zahrnuty.
/p[wc] Stejné jako /ps tím rozdílem, že se bude číst paměť kombinovaná s zápisem. Hranaté závorky kolem wc musí být zahrnuty.

Další informace najdete v tématu e, ea, eb, ed, eD, ef, ep, eq, eu, ew, eza (Zadejte hodnoty).

Opravy chyb

  • Podpora demanglování názvů v Rustu při ladění na Linuxu
  • Vylepšení ladění CLR
    • Přidání možnosti vynutit procházení snímků CLR v kombinovaném režimu
      • Nastavení ForceMixedModeStackWalker bylo přidáno do config.xml nebo DbgX.xml.
      • Přidán příkaz !forceclrmixedmodeunwind pro jednorázová šetření nebo pokud nemůžete změnit nastavení konfigurace.
  • Obecná vylepšení ladění CLR v Linuxu
  • Oprava řady problémů s ohledem na LinuxKernel.js a proměnné procesoru
    • Přidán příkaz !runq do LinuxKernel.js, aby bylo možné vypsat fronty spuštění plánovače jádra na procesor (podobně jako příkaz runq v nástroji pro analýzu chyb Linuxu).
    • Opravili jsme různé příkazy v LinuxKernel.js, aby odpovídaly změnám jádra: v novějších jádrech časová struktura používá uzly RB z mezipaměti místo původních uzlů RB; v novějších jádrech je seznam all_bdevs pryč, takže bloková zařízení jsou teď přebírána místo toho ze superbloku (blockdev_superblock).
  • Různé opravy natvis pro práci s novějšími verzemi sady Visual Studio
  • Preferovat zdrojový odkaz vs. starší informace o zdroji
    • Příkaz !lmsourcesinfo <module> byl přidán pro zobrazení streamů sourcelink z pdb (pro usnadnění ladění problémů se sourcelink).

Známé problémy

Při zadávání seznamu modulů, které se mají zaznamenávat pomocí TTD, zadání více než jednoho modulu v této verzi nefunguje.

1.2308.2002.0

Mnoho oprav chyb a malých vylepšení.

1.2306.12001.0

Mnoho oprav chyb a malých vylepšení.

1.2303.30001.0

Poznámka

Ladicí program byl přejmenován z WinDbg Preview na WinDbg.

Starší ladicí program, který byl vydán s Debugging Tools for Windows , bude označován jako WinDbg (classic).

Ladění časového cestování v ARM64

WinDbg běží nejen nativně na ARM64, ale také jsme povolili ladění TTD (Time Travel Debugging) nativních procesů ARM64. Teď můžete zaznamenávat nativní procesy ARM64 (a procesy x86 a ARM32) a snadno je ladit i na počítači x64. Podpora procesů s podporou x64 nebo x64 (ARM64EC) na zařízeních ARM64 ještě není dostupná.

Celkový výkon TTD byl také vylepšen, přičemž režie nahrávání byla výrazně snížena u procesů využívajících běžné instrukce SIMD. Celkově bylo optimalizováno 65 nových instrukcí od MMX až po SSE 4.2, AVX a AVX2.

Nejednoznačné řešení bodu přerušení

Nejednoznačné zarážky umožňují ladicímu programu nastavit zarážky v určitých scénářích, kdy se výraz zarážky vyřeší na více míst. Další informace naleznete v tématu nejednoznačné rozlišení zarážky.

1.2107.13001.0

Vyhledávání WinDbg Preview teď obsahuje možnost hledání pomocí regulárních výrazů – Regex. V okně, které chcete hledat, povolte regex stisknutím Ctrl+F a přepněte tlačítko označené .* vedle vyhledávacího pole.

Omezený režim

Omezený režim je volitelné nastavení, které může omezit typ ladící relace, kterou WinDbg Preview může spustit, pouze na vzdálené ladící relace a soubory s výpisem paměti. Další informace naleznete v tématu WinDbg – omezený režim.

Podpora stínovaných proměnných

V minulých verzích WinDbg vyvolá chyby "Nejednoznačný symbol" při pokusu o vyhodnocení (??) nebo zobrazení (dx) proměnné, která sdílí její název s jinou proměnnou v oboru. Aplikace Windbg teď rozlišuje proměnné, které sdílejí stejný název, připojením @n k názvu proměnné. Například: foo@0, foo@1

Tato změna se také projeví v okně Místní hodnoty. Dříve se zobrazila pouze nejbližší proměnná v dosahu.

1.2104.13002.0

Pohodlná funkce produktivity WinDbg Preview je schopnost detekovat vzory v příkazovém okně. Uděláte to tak, že vyberete libovolný text a zvýrazníte všechny ostatní výskyty tohoto textu. Vzhledem k tomu, že toto zvýraznění je užitečné při pohledu na vzory paměti, bude teď také zvýrazňovat ekvivalentní čísla v jiných radixech bez ohledu na to, jak je číslo formátováno v šestnáctkovém, desítkovém nebo vědeckém zápisu. Další informace o schématech číslování naleznete v tématu n (Set Number Base).

Příklad:

Při výběru 0x000001e2fb3f6160jsou všechny ostatní instance zvýrazněné bez ohledu na formát.

Snímek obrazovky s příkazovým oknem WinDbg se zvýrazněnými různými formáty čísel

Tato funkce funguje i s dočasnými zvýrazněními. Podržením klávesy Ctrl + dvojklikem na číslo zvýrazněte všechny jeho instance. Tímto způsobem můžete sledovat více důležitých čísel v historii příkazů (pokud chcete zvýraznění vymazat, stiskněte ctrl + dvakrát klikněte na číslo znovu). Tato funkce také funguje při hledání čísel pomocí ctrl+F.

Rozšířený přístup ke zdrojovému kódu

Příkaz zdrojové cesty .srcpath, .lsrcpath (Nastavit zdrojovou cestu) byl aktualizován tak, aby zahrnoval novou značku – DebugInfoD. Další informace naleznete v části Rozšířený přístup ke zdrojovému kódu.

Hostitelské a hostující stavy procesů WOW v datovém modelu

Při ladění 32bitového procesu WOW z 64bitového kontextu teď uživatelé můžou přistupovat k hostitelským i hostujícím stavům v datovém modelu.

Příklady 32bitového stavu hosta:

dx @$curprocess.Environment

dx @$curthread.Environment

dx @$curthread.Stack

Příklady 64bitového stavu hostitele:

dx @$curprocess.NativeEnvironment

dx @$curthread.NativeEnvironment

dx @$curthread.NativeStack

Vylepšení ladění JavaScriptu

JavaScript načtený do uživatelského rozhraní je teď možné přímo ladit v konzole pomocí příkazu .scriptdebug. Další informace naleznete v tématu JavaScript Debugger Scripting - JavaScript Debugging.

Vylepšení přístupnosti

Pomocí WinDbg Preview se snažíme vytvořit ladicí program, který je inkluzivní pro techniky s postižením. Neustále pracujeme na vylepšování přístupnosti. Provedli jsme následující vylepšení.

  • Odkazy příkazového okna se teď dají kliknout pomocí klávesnice (Shift+Enter).
  • Vylepšená navigace pomocí klávesnice v hlavní nabídce
  • Vylepšená navigace pásu karet pomocí klávesnice
  • Vyšší kontrast prvků uživatelského rozhraní

Nový typ přístupu k datům „Přepisovat“ pro Time Travel Debugger

TTD (Time Travel Debugger) teď poskytuje typ přístupu k datům „Přepsání“. Dotazy na paměť, například dx @$cursession.TTD.Memory() teď mají další sloupec zobrazující staré hodnoty zápisů.

Další opravy, vylepšení a aktualizace

  • Přidána funkce pro automatickou detekci a aplikaci náhradního řešení pro hardwarový problém USB 3.1, když jsou jak hostitel, tak cíl ladění jádra řadiči USB 3.1.
  • Přidána nová klávesová zkratka pro uživatelské rozhraní; Ctrl + Shift + kliknutí na odkaz DML zkopíruje odkaz do schránky.

1.0.2007.01003

Záložky na časové ose

Označte důležité pozice Time Travel záložkou ve WinDbg namísto manuálního kopírování pozice do poznámkového bloku. Záložky usnadňují rychlé prohlížení různých pozic v trasování vzhledem k jiným událostem a jejich anotování.

Můžete zadat popisný název záložek.

Snímek obrazovky dialogového okna pro novou záložku s příkladovým názvem pro první volání API v aplikaci Zobrazit pozdrav.

Přístup k záložkám prostřednictvím okna Časové osy dostupného v Zobrazení > Časová osa. Když na záložku najedete myší, zobrazí se název záložky.

snímek obrazovky časové osy WinDbg se třemi záložkami a popisem, který zobrazuje název záložky.

Záložku můžete vybrat a podržet (nebo na tuto záložku kliknout pravým tlačítkem myši), abyste ji mohli přesunout, přejmenovat nebo odstranit.

Snímek obrazovky s místní nabídkou kliknutí pravým tlačítkem myši na záložku s možnostmi pohybu na pozici, úpravu a odebrání

okno Moduly

V nových oknech se zobrazují moduly a související informace, které jsou k dispozici na pásu karet Zobrazení. Zobrazí se:

  • Název modulu včetně umístění cesty
  • Velikost v bajtech načteného modulu
  • Základní adresa, na kterou se modul načte
  • Verze souboru

snímek obrazovky s oknem zobrazení modulů WinDbg zobrazující pět uvedených modulů

Názvy/popis vláken dostupné v živém ladění

Názvy vláken, které jsou nastavené z SetThreadDescription, jsou nyní k dispozici při ladění v živém uživatelském režimu. Názvy vláken jsou k dispozici pomocí příkazu ~nebo datového modelu ladicího programu.

dbgconsole
0:000> ~
   0  Id: 53a0.5ffc Suspend: 1 Teb: 000000b1`db1ed000 Unfrozen "Hello world!"
   7  Id: 53a0.9114 Suspend: 1 Teb: 000000b1`db1ef000 Unfrozen
   8  Id: 53a0.2cc4 Suspend: 1 Teb: 000000b1`db1f1000 Unfrozen
   9  Id: 53a0.5c40 Suspend: 1 Teb: 000000b1`db1f3000 Unfrozen

0:000> dx @$curthread
@$curthread                 : ConsoleTestApp!ILT+25(mainCRTStartup) (00007ff7`fac7101e)  [Switch To]
    Id               : 0x5ffc
    Name             : Hello world!
    Stack
    Registers
    Environment

Podpora Portable PDB

Byla přidána podpora přenosných souborů PDB. Formát Portable PDB (Program Database) popisuje kódování informací ladění vytvořených kompilátory jazyků Common Language Infrastructure (CLI) a využívaných ladicím programem a dalšími nástroji. Další informace viz „Portable PDB Symbols“.

Další změny a opravy chyb

  • WinDbg teď podporuje ladění výpisu paměti jádra AMD64 a Linuxu.
  • Vylepšení záznamu cestování časem a další opravy

1.0.1912.11001

časové osy TTD – přidali jsme nové okno, které zobrazuje vizuální znázornění důležitých událostí v trasování: výjimky, zarážky, volání funkcí a přístup k paměti. Časové osy se automaticky otevřou a zobrazí výjimky (pokud existují) a body přerušení. Další informace najdete v části WinDbg Preview – časová osa.

Přepnuli jsme na výchozí rám oken – vlastní rám oken, který jsme používali, ačkoli byl hezčí, způsoboval některé problémy se škálováním a změnou velikosti pro významný počet lidí, takže jsme se rozhodli ho prozatím odebrat.

Nabídka Soubor vylepšila navigaci pomocí klávesnice – nabídka soubor je teď mnohem jednodušší procházet jenom pomocí klávesnice.

Další změny a opravy chyb

  • Když je cíl spuštěný, okno zásobníku a místních hodnot se teď zakáže a nezobrazí se "Nezadaná chyba", pokud neexistuje žádný cíl.
  • Do dialogového okna pro připojení jsme přidali sloupec "Služby", abyste mohli snadno zjistit, které služby jsou spuštěné.
  • Opravili jsme chybu, která způsobovala, že detekce architektury při spouštění aplikací s argumenty nefungovala.
  • Okno disassembleru se zlepšilo při načítání privátních symbolů.
  • jsprovider.dll se teď načte automaticky, takže jsme odebrali tlačítko „Load JSProvider“ ze skriptovacího pásu karet.

1.0.1908.30002

Vylepšení objektů volání TTD - Dotazy volání teď zahrnují názvy parametrů, typy a hodnoty. Při dotazování na trasování volání funkcí můžete získat plně zadané parametry a jejich hodnoty, což usnadňuje filtrování výsledků podle parametrů.

Podpora Open Enclave – WinDbg Preview teď může ladit aplikace Open Enclave (OE), pro další informace si přečtěte téma ladění Open Enclave).

ELF Core Dumps – V rámci podpory Open Enclave může WinDbg otevřít výpisy paměti ELF core a binární soubory a také symboly DWARF (v současné době není podporován DWARF 5) z enkláv i linuxových aplikací. Při otevírání výpisu paměti jádra z aplikace jiného systému než Windows by měly základní okna a příkazy správně fungovat, ale většina rozšíření a příkazů specifických pro Windows nebude fungovat. Soubory ELF a TRPASLÍK se stáhnou ze serverů symbolů podle klíčových konvencí definovaných zde. Enklávy jsou jediným podporovaným scénářem, ale máme otevřenou zpětnou vazbu k otevření jiných výpisů paměti jádra Linuxu.

Změna formátu souboru TTD – provedli jsme významnou aktualizaci formátu souboru pro trasování TTD, která přerušuje kompatibilitu vpřed. Předchozí verze WinDbg Preview nebudou moct otevřít trasování zaznamenané s touto (a budoucí) verzí WinDbg Preview, ale tyto (a budoucí) verze budou moci otevřít nové i staré trasování.

Další změny

  • TTD nyní použije 64bitový stroj pro indexování a odpovídající bitovou verzi strojového modulu ladicího programu pro přehrávání, aby minimalizoval potenciální problémy s pamětí při indexování a problémy s SOS při přehrávání.
  • Spuštěním příkazu dx bez jakýchkoli parametrů se teď zobrazí kořenový obor názvů, aby bylo procházení snazší.
  • Pomocí nabídky nastavení teď můžete změnit výchozí symbol a umístění zdrojové mezipaměti.
  • Vylepšená podpora nahrávání AVX-512 (záznam AVX-512 způsobí větší než normální zpomalení).
  • Povolili jsme offline licencování.

1.0.1905.12001

Vylepšení zmírnění chyb SymSetDiaSession – Naše minuloměsíční oprava, abychom zmírnili chybu způsobenou aplikacemi, které do našeho procesu vkládají DbgHelp, v některých scénářích stále nefungovala. Provedli jsme vylepšení a budeme dál monitorovat zpětnou vazbu k této chybě.

přizpůsobení barvy zvýraznění – mnoho scénářů vyžaduje několik otevřených instancí WinDbg, a přecházení tam a zpět mezi nimi může být matoucí a může nějakou dobu trvat, než zjistíte, která z nich je "správná". Přidali jsme možnost změnit modrou barvu zvýraznění, aby vizuálně odlišila relace a usnadnila přepínání mezi nimi.

Stačí vybrat pás karet Zobrazení a zvolit možnost pro barvu akcentu v poslední části. Až budou spuštěny budoucí relace z posledních cílů, bude barva zvýraznění zachována jako součást pracovního prostoru cíle.

Vylepšení tokenizace zdrojového kódu – Okno zdrojového kódu teď má základní podporu pro tokenizaci zdrojových souborů v Rustu a v C++ s použitím SEH __try/__except/__finally/__leave.

vylepšení korutin – vylepšená podpora korutinových místních proměnných a určitých optimalizovaných proměnných.

Výchozí nastavení symbolů a zdrojové mezipaměti – Přidána možnost do nabídky nastavení pod sekcí Nastavení ladění pro změnu umístění mezipaměti pro symboly. Poznámka – Je známý problém, kdy vyprázdnění toho způsobí selhání načítání zdroje. Budeme přidávat ověřování, abychom tomu zabránili v budoucí verzi.

-pv opravuje – opravuje chybu, která mohla v některých případech zabránit -pv (neinvazivní připojení) v činnosti.

1.0.1904.18001

Oprava chyby SymSetDiaSession – Už nějakou dobu dostáváme hlášení o chybě, která brání spuštění WinDbg Preview v některých situacích. Existuje několik externích aplikací, které se pokusí vložit verzi DbgHelp do našeho procesu, než ho načteme. Některé z nich používají verzi DbgHelp s chybějícími funkcemi, což způsobuje tuto chybu při pokusu o použití těchto funkcí. Přidali jsme opravu a budeme sledovat, jestli stále existují scénáře, ve kterých k tomu dochází.

Ovládání písma – přidali jsme nastavení pro ovládání písma a jeho velikosti. Existují dvě různá nastavení, jedno pro textová okna (jednosložková okna, jako je demontáž, zdroj, příkaz atd.) a jedno pro okna nástrojů (místní hodnoty, zásobník atd.). Tyto možnosti ještě nemají vliv na několik oblastí, které budeme v budoucnu aktualizovat.

Zvýraznění vylepšení – Trvalé zvýraznění textu v příkazovém okně teď zvýrazní také text v oknech zdrojového textu a oknech poznámek.

vylepšení načítání zdroje – Změnili jsme způsob, jakým načítání zdrojových souborů funguje. Dříve při otevírání zdrojového souboru nebyly operace modulu, jako je spouštění dalších příkazů, možné nebo nepředvídatelné. Změnili jsme, kde k načítání dochází, abychom umožnili lepší paralelismus a spolehlivější zrušení operací otevírání zdrojového kódu.

Další změny a opravy chyb:

  • Do kontextové nabídky zdrojového okna byla přidána volba „Přejít k demontáži“.
  • V okně disassembleru jsme přidali zaškrtávací políčko "Sledovat aktuální instrukci".
  • Opravili jsme chybu, která způsobovala pomalé provádění příkazového okna při výstupu velkého množství textu.
  • Byly změněny funkce kláves Page Up a Page Down tak, aby fungovaly podobně jako ve Visual Studiu.
  • Když se soubor ASM otevře ve zdrojovém okně, bude teď obsahovat základní zvýraznění komentářů, řetězců a direktiv.

1.0.1812.12001

Tato verze zahrnuje tyto aktualizace.

hlavička datového modelu Ladicího programu C++ – k dispozici je nová hlavička C++, DbgModel.h, která je součástí sady Windows SDK pro rozšíření datového modelu ladicího programu prostřednictvím jazyka C++. Další informace najdete v Přehled datového modelu Ladicího programu C++. Tato verze obsahuje nové rozšíření, které do datového modelu ladicího programu přidá několik dalších funkcí "stylu rozhraní API", které lze získat přístup pomocí příkazu dx, JavaScriptu a nové hlavičky DbgModel.h. Toto rozšíření přidává do datového modelu znalosti o sestavení a provádění kódu pomocí oboru názvů Debugger.Utility.Code a o místním systému souborů pomocí oboru názvů Debugger.Utility.FileSystem.

rozšíření syntetických typů S tímto novým rozšířením rozhraní API máme v našem úložišti GitHubu novou ukázku – https://github.com/Microsoft/WinDbg-Samples/tree/master/SyntheticTypes. Toto rozšíření JavaScriptu čte základní soubory hlaviček jazyka C a definuje syntetické informace o typu pro struktury a sjednocení definované v hlavičce. Prostřednictvím příkazu dx lze pak zobrazit paměť strukturovanou, jako kdybyste měli PDB s informacemi o typu pro tyto typy.

Další změny a opravy chyb:

  • WinDbg Preview teď bude inteligentněji zpracovávat přechod okna se zdrojovým kódem nebo okna pro disassemblování do popředí během krokování.
  • Byl uspořádán název okna WinDbg Preview tak, aby při ladění jádra obsahoval na začátku důležitější informace.
  • Kontrast střídavého pozadí v příkazovém okně by měl být mírně znatelný.

1.0.1810.2001

Tato verze zahrnuje tyto aktualizace.

  • Nové dialogové okno Nastavení, které se otevírá z nabídky Soubor nebo z pásu karet Domů.
  • Dialogové okno Nastavení událostí a výjimek Tato nabídka změní způsob, jakým ladicí program zpracovává události a výjimky, což je ekvivalent příkazů sx nebo dialogového okna filtrů událostí WinDbg. Na pásu karet Domů vyberte Nastavení a pak na levé straně klikněte na Události a výjimky, abyste je mohli spravovat.
  • Vylepšený indexer TTD s lepším výkonem. Tím se zvýší výkon indexování trasovacích souborů TTD, takže proces indexování bude mnohem rychlejší (mezi 2x–10x) a indexovací soubory budou mnohem menší (přibližně 50% menší). Vylepšení výkonu jsou nejvýraznější pro trasování o velikosti přes 4 GB nebo při použití počítače s mnoha procesorovými jádry (8+). Nový indexer usnadňuje ladění velmi velkých souborů stop (50 GB+).
  • Nový debugArch příznak spuštění pro určení architektury. WinDbg Preview se pokusí spustit modul ladicího programu se správnou bitovou verzí cíle, aby lépe podporoval ladění spravovaného kódu. Existují okolnosti, kdy nemůže určit správnou bitovou verzi nebo můžete chtít přepsat, co se rozhodne. K řízení architektury modulu ladicího programu použijte -debugArch x86|amd64.

Další změny a opravy chyb:

  • Opravili jsme chybu, která způsobovala, že se černé pruhy zobrazovaly v ladicím programu na celé obrazovce s otevřeným plovoucím oknem.
  • Opravili jsme chybu, která způsobovala neúmyslné vymazání možností symbolů.
  • Historie příkazů je teď zachována při spouštění z nedávných cílů.
  • V okně datového modelu teď můžete upravit hodnoty.
  • Neindexované trasování TTD teď bude jasnější, že nejsou indexované.
  • Vylepšený výkon okna místních hodnot
  • Přidáno tlačítko pásu karet pro uložení protokolů příkazového okna do souboru.
  • Přidán. SelectMany(<projekce>) do výchozí sady metod LINQ.

1.0.1807.11002

Tato verze zahrnuje tyto aktualizace.

Automatické ukládání a načítání zarážek. Toto je první krok pro nahrazení pracovních prostorů. Na této trase začínáme tím, že povolíme ukládání a načítání zarážek. Spuštění něčeho, co jste dříve ladili, z karty Nedávné v nabídce souboru teď načte body přerušení z této relace. Plánem je rozšířit tuto funkci, aby se zachovaly další informace napříč relacemi. Hardwarové body přerušení (ba) a různé jiné vlastnosti bodů přerušení, jako jsou kontexty specifické pro vlákna a procesy, stejně jako podmínky, se v současné době neukládají.

Menší změny a opravy chyb:

  • Přidání možností příkazového řádku -x, -xe, -xd, -xn a -xi pro řízení zpracování výjimek a událostí. Tyto možnosti příkazového řádku se chovají stejně jako jejich protějšky v příkazech.
  • Okno poznámek teď podporuje formátování tučným písmem, podtržením a kurzívou.
  • Opravili jsme některé problémy s přiblížením a posouváním.
  • Při výběru textu v příkazovém, paměťovém, zdrojovém nebo rozebraném okně se zobrazí světlé zvýraznění přes ostatní instance vybraného textu.
  • Opravili jsme chybu, kdy přerušení načítání symbolů způsobovalo selhání načítání symbolů po zbytek relace.
  • NatVis se teď znovu načte správně při restartování relace.

1.0.1805.17002

Tato verze zahrnuje tyto aktualizace.

Nové okno zpětného překladu - Okno zpětného překladu teď zahrnuje:

  • Při posouvání nahoru nebo dolů se bude vždy, když je to možné, načítat více demontáže.
  • Zvýrazňování syntaxe pro čísla, adresy kódu a opkódy.
  • Výběrem symbolu kódu se disassemblovací okno přesune na dané místo.
  • Když najedete myší na čísla, zobrazí se popis, který toto číslo převede do jiných číselných soustav.
  • Záhlaví označuje začátek funkce.

rychlejší zdrojové okno – zdrojové okno bylo aktualizováno tak, aby bylo rychlejší a efektivnější.

Menší změny a opravy chyb:

  • Opravili jsme problémy související s ukládáním symbolů do mezipaměti.
  • Opravili jsme některé případy, kdy nebylo možné přepnout počáteční přestávku, když cíl nebyl přerušen.
  • Pokud v příkazovém okně stisknete tabulátor, když není nic k dispozici, kurzor teď zůstane ve vstupním poli.
  • WinDbg Preview teď při otevírání souborů CAB automaticky rozpozná bitovou verzi.

1.0.1804.18003

Tato verze zahrnuje tyto aktualizace.

Vylepšení stavu symbolu a zrušení – Jsou chvíle, kdy ladicí program zobrazuje ZANEPRÁZDNĚNÝ a načítá symboly, a je obtížné určit, co dělá a proč, bez povoleného !sym noisy. Aktualizovali jsme WinDbg Preview, aby měla lepší komunikaci s tím, co dělá při načítání symbolů, abychom mohli vyřešit případné problémy. Kromě snadného pohledu na to, co se přesně děje, jsme provedli některé změny, které by měly učinit zrušení symbolů spolehlivější, a okno Protokoly bude obsahovat některé podrobnosti, jež se obvykle zobrazují jako výstup, když je aktivována volba !sym noisy. Pokud kliknete na Zobrazení –> Protokoly získáte úplný výstup načítání hlučného symbolu, aniž byste ho museli zapnout a pokusit se symboly znovu načíst.

experimentální okno poznámek – WinDbg Preview má teď okno pro pořizování poznámek. Stačí stisknout Zobrazit –> "Poznámky" a otevřít ho. Pokud do něj zkopírujete nebo vložíte, odkazy DML se zachovají a budou fungovat stejně jako v příkazovém okně. Soubory poznámek můžete také uložit a načíst z pásu karet Poznámky, když je okno otevřené.

Experimentální rychlejší zdrojové okno – pro zlepšení výkonu WinDbg Preview existuje experimentální nové zdrojové okno, které je poměrně o něco efektivnější. V kontextových nabídkách a zvýrazňování syntaxe je stále několik mezer, ale chceme všem dát možnost vyzkoušet si to, než se dokončí, abychom nám mohli dát zpětnou vazbu. Spusťte $UseFastSourceWindow, abyste ho mohli použít. Pokud se chcete vrátit ke starému, spusťte $UseMonacoSourceWindow. Nastavení se zachová napříč relacemi. Abyste získali novou verzi, budete muset zavřít a znovu otevřít opensourcová okna.

JSProvider API verze 1.2 – pro rozšíření JavaScriptu, která deklarují podporu rozhraní API verze 1.2:

  • Jakýkoli objekt s metodou .compareTo, která ukončí skript, bude mít na něm vlastní srovnávací operátor (relační operátory budou fungovat v vyhodnocovače DX a jinde: například IModelObject::Compare)
  • Jakýkoli objekt s metodou .equals, která ukončí skript, bude mít na něm vlastní operátor rovnosti (== a !=, bude fungovat v vyhodnocovače DX a jinde: například IModelObject::IsEqualTo)
  • Nativní objekty nebo objekty datového modelu, které vstoupí do skriptu, budou mít metody .compareTo a .equals, které umožní přístup k jakýmkoli vlastním srovnávačům nebo vlastním implementacím rovnosti.

Menší změny a opravy chyb:

  • .server teď vypíše plně kvalifikovaný název domény, který se bude snadněji používat, když dojde k problémům s doménou s krátkými názvy.
  • Ctrl+G teď funguje ve zdrojovém okně.
  • Přidán adresní řádek do okna disassemblace.
  • WinDbg Preview teď bude zpracovávat _NT_SYMBOL_PATH očekávaným způsobem.
  • Přidána volba příkazového řádku -server.
  • Dotazy datového modelu TTD se teď dají zobrazit postupně, takže pokud ho přerušíte, stále uvidíte některé výsledky. Tato funkce je stále experimentální a volitelná. Spuštěním dx @$cursession.TTD.AsyncQueryEnabled = 1 ji povolte.
  • Příkaz dps teď obsahuje odkazy na zdrojové soubory, na které odkazuje.

1.1801.19001.0

Tato verze zahrnuje tyto aktualizace.

Zvýraznění textu – teď můžete zvýraznit všechny instance vybraného textu přímo v ladicím programu. Pokud chcete tuto funkci použít, stačí vybrat nějaký text v příkazovém okně a pak na pásu karet příkazu vybrat Zvýraznění nebo stisknout kombinaci kláves CTRL+ALT+H. Když použijete jednu z těchto funkcí na již zvýrazněný text, zvýraznění se odebere.

Pokud dáváte přednost příkazům, můžete použít příkaz "$hl":

$hl ["someValueHere"] – Změnit zvýraznění daného textu (nebo zrušit zvýraznění, pokud je již zvýrazněn)

$hl clearAll – Vymazat všechny zvýrazněné položky

$hl caseSensitive [1|0] – Nastavte porovnávání zvýraznění na rozlišování malých a velkých písmen nebo nerozlišování (výchozí nastavení nerozlišuje).

Tato verze obsahuje také některé menší opravy chyb.

1.1712.15003.0

Tato verze zahrnuje tyto aktualizace.

dotazy na přístup k paměti TTD – Nyní můžete TTD dotazovat na přístup k paměti podobně, jako když dnes dotazujete na volání. To vám umožní najít všechny čtení, zápisy a spouštění, které přistupují ke konkrétnímu rozsahu paměti.

Příklad čtení a zápisu: dx @$cursession.TTD.Memory(startAddress, endAddress, "rw")

Příklad jedinečného spuštění: dx @$cursession.TTD.Memory(startAddress, endAddress, "ec")

Změny nastavení – WinDbg Preview teď automaticky ukládá nastavení mezi relacemi, včetně cesty symbolů a zdrojové cesty.

vylepšení JavaScriptu

  • 64-bitová čísla a číselné hodnoty v JavaScriptu teď obsahují metodu modulo, která umožňuje skutečnou 64-bitovou operaci modulo.
  • Objekty definované v JavaScriptu teď můžou implementovat vlastní srovnatelný nebo equatable pojem, který bude fungovat v dx pomocí standardních operátorů C++ nebo v operacích LINQ. Aby bylo možné tento postup využít, musí skript deklarovat v poli initializeScript, které podporuje novou verzi rozhraní API hostitele vložením záznamu "new host.apiVersionSupport(1, 2)". Až to uděláte, můžete tyto funkce použít v jakémkoli dotazu LINQ pro okno 'dx' nebo okno datového modelu. Pokud metoda implementuje .compareTo(jiné), je srovnatelná (porovnávací operátory fungují v dx a LINQ). Pokud metoda vrátí zápornou hodnotu, například "this < other". Pokud metoda vrátí nulu, znamená to, že "this == other". Pokud metoda vrátí kladnou hodnotu „this > other“. Pokud metoda implementuje .equals(other), je porovnatelná (== funguje v dx a LINQ). Metoda musí vrátit hodnotu true nebo false.

Menší změny a opravy chyb:

  • Opravili jsme chybu, při které během ladění spouštění systému nefungovala okna zásobníku a lokálních proměnných.
  • Aktualizace výstupu LM pro přesnější hlášení pole ProductVersion a podobných datových polí.
  • Při relacích TTD bylo povoleno tlačítko "krokovat zpět".
  • Přidání podpory pro -lsrcpath
  • Záhlaví v místních prostředích, kukátkách a oknech modelů teď při posouvání dolů nezmizí.
  • Při použití kláves ALT+Tabbing zpět do WinDbg Preview se v příkazovém okně správně zachová umístění kurzoru.
  • Byla přidána klávesová zkratka CTRL+ALT+V pro přepínání podrobného režimu.
  • Automatické posouvání příkazového okna teď můžete zakázat tak, že vyberete a podržíte (nebo kliknete pravým tlačítkem) na kartu příkazového okna a zvolíte "Vypnout automatické posouvání".
  • Podřízené procesy teď můžete ladit prostřednictvím pokročilé stránky spustitelného souboru.

1.0.14.0

Tato verze zahrnuje tyto aktualizace.

Vylepšené prostředí procesového serveru – Do nabídky Soubor bylo přidáno nové oznámení, které ukazuje, ke kterému procesovému serveru jste připojeni a s nímž pracujete. V rámci těchto změn zůstane při ukončení ladicí relace připojení procesového serveru zachováno a může být odpojeno v nabídce Soubor.

Nové přednastavené možnosti rozvržení na pásu karet Zobrazení – na pásu karet Zobrazení je nová možnost Rozvržení. Aktuálně existují tři rozložení: výchozí, jedno zaměřené na demontáž a jedno minimální.

pás karet Ladění cesty času – je k dispozici vylepšený pás karet Časové cesty, který se zobrazí při ladění trasování cesty času.

metadata ze skriptů JavaScriptu – rozšíření JavaScriptu teď můžou vracet metadata pro vlastnosti a další konstrukty. To znamená, že rozšíření může poskytovat řetězce nápovědy, indikovat radix zobrazení pro hodnoty a další. Metadata jsou poskytována umístěním popisovače metadat na objekt prostřednictvím přítomnosti Symbol.metadataDescriptor nebo explicitní volání host.metadata.defineMetadata. Funkce vrací, iterované hodnoty a další kontexty pro hodnoty mohou vracet metadata pro jejich hodnotu prostřednictvím host.metadata.valueWithMetadata.

aktualizace rozhraní JavaScript API – některé potenciálně zásadní změny na úrovni zdroje byly provedeny v rozhraních API v rámci zprostředkovatele JavaScriptu (včetně nových projektovaných metod a vlastností nativních objektů). Existující rozšíření neuvidí žádné z potenciálně zásadních změn bez toho, že by podporovala novou verzi rozhraní JsProvider API. Podpora nové verze rozhraní API je označena umístěním záznamu host.apiVersionSupport do pole vráceného inicializací Scriptu s prohlášením o podpoře verze 1.1. možná? .. s hodnotou označující podporu pro verzi 1.1.

Změny v rozhraní API verze 1.1 zahrnují:

  • host.getModuleSymbol a host.getModuleType vrátí hodnotu null, pokud nemůže najít symbol místo vyvolání výjimky.
  • Všechny nativní objekty mají kromě .targetLocation také vlastnost adresy. Pokud objekt nemá adresu, při přístupu k vlastnosti se vyvolá výjimka.
  • Všechny nativní objekty mají nové metody .getObjectValue a .setObjectValue pro přístup k vlastnostem objektu, které mohou být v konfliktu s názvy JavaScript místa na objektu (např. 'address') .

další změny JavaScriptu

  • Rozšíření JavaScriptu teď můžou přidávat a odebírat vlastnosti objektů datového modelu prostřednictvím Object.defineProperty a operátoru delete. Přidání nebo registrace třídy JavaScriptu jako nadřazeného modelu nebo podpisu typu je stále upřednostňovaným způsobem manipulace s objektovým modelem.
  • Rozšíření JavaScriptu teď můžou upravovat globální proměnné v modulech v ladicím cíli prostřednictvím nového rozhraní API host.setModuleSymbol.
  • Všechny matematické funkce, které jsou na 64bitovém typu knihovny (např. .add, .subtract, .multipli, .divide atd.), jsou teď k dispozici také u čísel JavaScriptu.
  • Funkce a vlastnosti JavaScriptu teď můžou vracet hodnoty jako výčty pomocí vlastního zpracování. Funkce nebo přístupové objekty vlastností mohou vrátit host.typeSystem.marshalAs(hodnota, typ...), aby bylo možné takové vlastní zařazování vyvolat.
  • Příkaz zarážky v ladicím programu skriptu teď může kromě pozic řádků a sloupců přerušit názvy funkcí.
  • Objekty typu v rozšířeních JavaScript mají přístup k svému obsahujícímu modulu prostřednictvím vlastnosti .containingModule.

Menší změny a opravy chyb:

  • Opravili jsme formátování podmíněných karet, aby bylo méně matoucí.
  • Znovu přepracován DML, aby byl přísnější při parsování a zlepšil tak výkon.
  • Různé opravy výkonu a chování funkce CTRL+F.
  • Při spuštění bez zvýšených oprávnění bylo přidáno upozornění před pokusem o použití TTD.
  • Byla přidána možnost přepsání automatické detekce bitové šířky cíle.
  • Zakázali jsme různé možnosti v nabídce souborů a na pásu karet, když se nedají použít (například "Přejít" v případě souboru s výpisem paměti).

Známé problémy:

  • SOS nebude fungovat na trasování x86.

1.0.13.0

Tato verze přidává sledování časového cestování. Ladění časových cest umožňuje zaznamenat proces a pak ho později přehrát dopředu i dozadu. Ladění TTD (Time Travel Debugging) vám může usnadnit ladění problémů tím, že vám umožní převinout relaci ladicího programu zpět, aniž byste museli problém reprodukovat, dokud nenajdete chybu. Další informace naleznete v Přehled ladění časových cest.

1.0.12.0

Tato verze byla první verzí WinDbg Preview. Obecné informace o funkcích dostupných ve WinDbg Preview, Hlavní funkce WinDbg.

Viz také

WinDbg – instalace

WinDbg – možnosti spuštění příkazového řádku