Freigeben über


Versionshinweise

WinDbg-Logo mit einer Lupe, die Bits inspiziert.

Dieses Thema enthält Informationen zu den Neuerungen in WinDbg. Frühere Versionen wurden als WinDbg Preview veröffentlicht.

1.2402.24001.0

Neue Funktionen

Live Linux-Debugging

Sie können jetzt einen Linux-Prozess live debuggen. Weitere Informationen finden Sie in diesen Themen:

Debuggen von Linux-Live-Remoteprozessen

Linux-Symbole und -Quellen

Der WinDbg-Client für die vorhersehbare Zukunft erfordert weiterhin Windows, da WinDbg nicht unter Linux ausgeführt wird.

Aufzeichnen einer Teilmenge der Ausführung mit Time Travel Debugging

Sie können nun eine Liste von Modulen angeben, die erfasst werden sollen, um TTD auf die Module zu konzentrieren, die Sie interessieren. Dies kann den Aufzeichnungsaufwand erheblich reduzieren. Um dies zu verwenden, aktivieren Sie einfach "Teilmenge der Ausführung aufzeichnen" im Dialogfeld "Konfigurieren und Aufzeichnen", und geben Sie dann die Module an, die aufgezeichnet werden sollen. (siehe bekannte Probleme unten).

Zur feineren Kontrolle können Sie Ihr Programm genau mit einer neuen In-Process-Aufzeichnungs-API aufzeichnen. Sehen Sie sich mit unserem Beispielcode und unserer Dokumentation an.

Kompaktes Registerfenster

Das neue Registerfenster sieht wie die Ausgabe des r Befehls aus. Beachten Sie, dass das Bearbeiten aus dem neuen Registerfenster noch nicht unterstützt wird.

Neue Parameter für e (Werte eingeben) in Speicherbefehle

Die e (Werte eingeben) in Speicherbefehle unterstützen jetzt physische Adressen wie die d Befehle (Speicher anzeigen). Beachten Sie, dass diese Optionen nur im Kernelmodus unterstützt werden:

Option Beschreibung
/p Verwendet physische Speicheradressen für die Anzeige. Der durch Range angegebene Bereich wird aus dem physischen Speicher und nicht aus dem virtuellen Speicher entnommen.
/p[c] Identisch mit /pder Ausnahme, dass der zwischengespeicherte Speicher gelesen wird. Die Klammern um c müssen enthalten sein.
/p[uc] Identisch mit /pder Ausnahme, dass nicht zwischengespeicherter Speicher gelesen wird. Die Klammern um uc müssen enthalten sein.
/p[wc] Identisch mit /pder Ausnahme, dass der kombinierte Speicher mit Schreibzugriff gelesen wird. Die Klammern um wc müssen enthalten sein.

Weitere Informationen finden Sie unter e, ea, eb, ed, eD, ef, ep, eq, eu, ew, eza (Werte eingeben).

Fehlerkorrekturen

  • Unterstützung für den Rostnamendeangling beim Linux-Debugging
  • Verbesserungen beim CLR-Debugging
    • Hinzufügen der Möglichkeit zum Erzwingen des Stapelstapels für CLR-Frames im gemischten Modus
      • Einstellung ForceMixedModeStackWalker hinzugefügt zu config.xml oder DbgX.xml.
      • Befehl für einmalige Untersuchungen hinzugefügt !forceclrmixedmodeunwind oder wenn Sie die Konfigurationseinstellung nicht ändern können.
  • Allgemeine Verbesserungen des CLR-Debuggings unter Linux
  • Beheben einer Reihe von Problemen in Bezug auf LinuxKernel.js und variablen pro CPU
    • Befehl !runq zum LinuxKernel.js hinzugefügt, um die Ausführungswarteschlangen für den Kernelplaner pro Cpu abbilden zu können (ähnlich wie in Form des Befehls des Linux-Absturzhilfsprogramms runq )
    • Verschiedene Befehle in LinuxKernel.js wurden behoben, um Kerneländerungen zu entsprechen: In neueren Kerneln verwendet die Zeitgeberstruktur zwischengespeicherte RB-Knoten anstelle von unformatierten RSP-Knoten; in neueren Kerneln ist die liste all_bdevs nicht mehr vorhanden, sodass blockierte Geräte stattdessen vom Superblock (blockdev_superblock) entfernt werden.
  • Verschiedene Natvis-Fixes für die Arbeit wie die neueren Versionen von Visual Studio
  • Bevorzugt sourcelink vs legacy sourceinfo
    • !lmsourcesinfo <module> Befehl zum Anzeigen von Sourcelink-Datenströmen aus pdb hinzugefügt (um Debuggingprobleme mit sourcelink zu unterstützen).

Bekannte Probleme

Wenn Sie eine Liste von Modulen angeben, die mit TTD erfasst werden sollen, funktioniert die Angabe mehrerer Module in dieser Version nicht.

1.2308.2002.0

Viele Fehlerbehebungen und kleine Verbesserungen.

1.2306.12001.0

Viele Fehlerbehebungen und kleine Verbesserungen.

1.2303.30001.0

Hinweis

Der Debugger wurde von WinDbg Preview in WinDbg umbenannt.

Auf den Legacydebugger, der mit Debugtools für Windows veröffentlicht wurde, wird als WinDbg (klassisch) verwiesen.

Time Travel Debugging auf ARM64

WinDbg wird nicht nur nativ auf ARM64 ausgeführt, wir haben auch Time Travel Debugging (TTD) von systemeigenen ARM64-Prozessen aktiviert. Sie können jetzt systemeigene ARM64-Prozesse (und x86- und ARM32-Prozesse) aufzeichnen und einfach debuggen, auch auf Ihrem x64-Computer. Die Unterstützung für x64- oder x64-fähige Prozesse (ARM64EC) auf ARM64-Geräten ist noch nicht verfügbar.

Insgesamt wurde auch die TTD-Leistung verbessert, wobei der Aufzeichnungsaufwand für Prozesse, die allgemeine SIMD-Anweisungen verwenden, erheblich reduziert wurde. Insgesamt wurden 65 neue Anweisungen optimiert, von MMX bis SSE 4.2, AVX und AVX2.

Mehrdeutige Haltepunktauflösung

Mehrdeutige Haltepunkte ermöglichen es dem Debugger, Haltepunkte in bestimmten Szenarien festzulegen, in denen ein Haltepunktausdruck an mehreren Speicherorten aufgelöst wird. Weitere Informationen finden Sie unter "Mehrdeutige Haltepunktauflösung".

1.2107.13001.0

Die WinDbg Preview-Suche enthält jetzt die Option zum Suchen mit regulären Ausdrücken – Regex. Aktivieren Sie Regex im Fenster, das Sie durchsuchen möchten, indem Sie STRG+F ausführen und dann die Schaltfläche .* neben dem Suchfeld umschalten.

Eingeschränkter Modus

Der eingeschränkte Modus ist eine optionale Einstellung, mit der der Typ der Debugsitzungen eingeschränkt werden kann, kann WinDbg Preview nur mit Remotedebuggingsitzungen und Speicherabbilddateien beginnen. Weitere Informationen finden Sie unter WinDbg – Eingeschränkter Modus.

Unterstützung von Schattenvariablen

In früheren Versionen löst WinDbg fehler "Mehrdeutiges Symbol" aus, wenn versucht wird, eine Variable auszuwerten (??) oder eine Variable (dx) anzuzeigen, die ihren Namen mit einer anderen Variablen im Bereich teilt. Windbg disambiguiert jetzt Variablen, die denselben Namen gemeinsam verwenden, indem sie an den Variablennamen anhängen @n . Beispiel: foo@0, foo@1

Diese Änderung wird auch im Fenster "Lokal" angezeigt. Zuvor würde nur die nächste Variable im Bereich angezeigt.

1.2104.13002.0

Ein bequemes Produktivitätsfeature von WinDbg Preview ist die Möglichkeit, Muster im Befehlsfenster zu erkennen. Wählen Sie dazu einen beliebigen Text und alle anderen Vorkommen dieses Texts aus. Da diese Hervorhebung beim Betrachten von Speichermustern nützlich ist, werden jetzt auch gleichwertige Zahlen in anderen Radixen hervorgehoben, unabhängig davon, wie die Zahl in Hexadezimal-, Dezimal- oder wissenschaftlicher Schreibweise formatiert ist. Weitere Informationen zu Nummerierungsschemas finden Sie unter n (Set Number Base).For more information about numbering scheme, see n (Set Number Base).

Beispiel:

Beim Auswählen 0x000001e2fb3f6160werden alle anderen Instanzen unabhängig vom Format hervorgehoben.

Screenshot des WinDbg-Befehlsfensters mit hervorgehobenen Zahlenformaten.

Dieses Feature funktioniert auch mit halb temporären Hervorhebungen. STRG+Doppelklicken Sie auf eine Zahl, um alle zugehörigen Instanzen hervorzuheben. Auf diese Weise können Sie mehrere wichtige Zahlen im gesamten Befehlsverlauf nachverfolgen (um die Hervorhebung zu löschen, STRG+Doppelklicken Sie erneut auf die Zahl). Schließlich funktioniert dieses Feature auch beim Durchsuchen von Zahlen mit STRG+F.

Erweiterter Quellcodezugriff

Der Quellpfadbefehl .srcpath, .lsrcpath (Set Source Path) wurde aktualisiert, um ein neues Tag – DebugInfoD – einzuschließen. Weitere Informationen finden Sie unter Erweiterter Quellcodezugriff.

Host- und Gastzustände von WOW-Prozessen im Datenmodell

Beim Debuggen eines 32-Bit-WOW-Prozesses aus einem 64-Bit-Kontext können Benutzer jetzt sowohl auf den Host- als auch den Gaststatus innerhalb des Datenmodells zugreifen.

Beispiele für den 32-Bit-Gastzustand:

dx @$curprocess.Environment

dx @$curthread.Environment

dx @$curthread.Stack

Beispiele für den 64-Bit-Hoststatus:

dx @$curprocess.NativeEnvironment

dx @$curthread.NativeEnvironment

dx @$curthread.NativeStack

Verbesserungen beim JavaScript-Debugging

JavaScript, das in der Benutzeroberfläche geladen wurde, kann jetzt mithilfe des Befehls ".scriptdebug" direkt in der Konsole gedebuggt werden. Weitere Informationen finden Sie unter JavaScript Debugger Scripting – JavaScript Debugging.

Verbesserungen der Barrierefreiheit

Mit WinDbg Preview haben wir uns verpflichtet, einen Debugger zu erstellen, der für Ingenieure mit Behinderungen inklusive ist, wir verbessern kontinuierlich die Barrierefreiheit. Die folgenden Verbesserungen wurden vorgenommen.

  • Befehlsfensterlinks können jetzt über die Tastatur angeklickt werden (UMSCHALT+EINGABETASTE)
  • Verbesserte Tastaturnavigation Standard Menüs
  • Verbesserte Tastaturnavigation im Menüband
  • Erhöhter Kontrast für UI-Elemente

Neuer Datentyp "Overwrite" für time Travel Debugger

Time Travel Debugger (TTD) stellt jetzt einen Datentyp "Overwrite" bereit. Speicherabfragen wie dx @$cursession.TTD.Memory() z. B. verfügen jetzt über eine zusätzliche Spalte, in der die alten Werte von Schreibvorgängen angezeigt werden.

Weitere Korrekturen, Verbesserungen und Updates

  • Feature zum automatischen Erkennen und Anwenden der Problemumgehung für USB 3.1-Hardwareproblem, wenn sowohl Kerneldebugginghost als auch Ziel-USB 3.1-Controller sind.
  • Neue UI-Verknüpfung hinzugefügt: STRG+UMSCHALT+Klicken Sie auf einen DML-Link, um ihn in die Zwischenablage zu kopieren.

1.0.2007.01003

Zeitachsenmarken

Setzen Sie ein Lesezeichen für wichtige Zeitreisepositionen in WinDbg, anstatt die Position manuell in den Notizblock zu kopieren. Lesezeichen erleichtern es, auf einen Blick verschiedene Positionen in der Spur im Verhältnis zu anderen Ereignissen zu sehen und sie mit Anmerkungen zu versehen.

Sie können einen beschreibenden Namen für Lesezeichen vergeben.

Screenshot des Dialogfelds

Greifen Sie auf Lesezeichen über das Fenster Zeitleiste zu, das unter View > Timeline verfügbar ist. Wenn Sie den Mauszeiger über ein Lesezeichen bewegen, wird der Name des Lesezeichens angezeigt.

Screenshot von WinDbg Zeitleiste mit drei Lesezeichen und einer QuickInfo, die den Namen der Textmarke anzeigt.

Sie können das Lesezeichen auswählen und halten (oder mit der rechten Maustaste darauf klicken), um zu dieser Position zu gelangen, die Textmarke umzubenennen oder zu löschen.

Screenshot des Kontextmenüs

Modulfenster

In einem neuen Fenster werden Module und zugehörige Informationen angezeigt, die über das Menüband "Ansicht" verfügbar sind. Er enthält folgende Informationen:

  • Der Name des Moduls einschließlich der Pfadangabe
  • Die Größe des geladenen Moduls in Bytes
  • Die Basisadresse, unter der das Modul geladen wird
  • Die Dateiversion

Screenshot des Ansichtsfensters

Threadnamen/Beschreibungen, die im Livedebugging verfügbar sind

Threadnamen, die über "SetThreadDescription" festgelegt sind, sind jetzt verfügbar, wenn Sie das Debuggen im Live-Benutzermodus ausführen. Threadnamen sind mit dem Befehl "~" oder dem Debuggerdatenmodell verfügbar.

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

Portable PDB-Unterstützung

Portable PDB-Unterstützung wurde hinzugefügt. Das Format portable PDB (Program Database) beschreibt eine Codierung von Debuginformationen, die von Compilern von Common Language Infrastructure (CLI)-Sprachen erstellt und von Debuggern und anderen Tools verwendet werden. Weitere Informationen finden Sie unter Portable PDB Symbols.

Andere Änderungen und Fehlerbehebungen

  • WinDbg unterstützt jetzt AMD64- und Linux-Kernelabbilddebugging.
  • Verbesserungen bei der Zeitreiseaufzeichnung und andere Fixes.

1.0.1912.11001

TTD-Zeitachsen – Wir haben ein neues Fenster hinzugefügt, in dem eine visuelle Darstellung wichtiger Ereignisse in Ihrer Ablaufverfolgung angezeigt wird: Ausnahmen, Haltepunkte, Funktionsaufrufe und Speicherzugriffe. Zeitachsen werden ausnahmen (sofern vorhanden) und Haltepunkte automatisch geöffnet und angezeigt. Weitere Informationen finden Sie unter WinDbg Preview – Timeline.

Auf Standardfensterchrom gewechselt – Das benutzerdefinierte Fensterchrom, das wir verwendet haben, während wir etwas schöner waren, verursachte einige Skalierungs- und Größenänderungsprobleme für eine wichtige Anzahl von Personen, sodass wir uns entschieden haben, es vorerst zu entfernen.

Dateimenü verbesserte Tastaturnavigation – Das Dateimenü ist jetzt viel einfacher, mit nur einer Tastatur zu navigieren.

Andere Änderungen und Fehlerbehebungen

  • Das Stapel- und das Lokale Fenster werden jetzt deaktiviert, wenn Ihr Ziel ausgeführt wird, und es wird kein "Nicht angegebener Fehler" angezeigt, wenn kein Ziel vorhanden ist.
  • Die Spalte "Dienste" wurde dem Dialogfeld "Anfügen" hinzugefügt, um leicht zu finden, welche Dienste ausgeführt werden.
  • Ein Fehler wurde behoben, der dazu führte, dass die Architekturerkennung beim Starten von Anwendungen mit Argumenten nicht funktionierte.
  • Das Demontagefenster hat die Demontage verbessert, wenn private Symbole geladen werden.
  • jsprovider.dll wird jetzt automatisch geladen, daher wurde die Schaltfläche "JsProvider laden" aus dem Skriptmenüband entfernt.

1.0.1908.30002

Verbesserungen an TTD-Aufrufenobjekten - Aufrufabfragen umfassen jetzt Parameternamen, Typen und Werte. Beim Abfragen über Ablaufverfolgungen für Funktionsaufrufe können Sie vollständig eingegebene Parameter und deren Werte abrufen, sodass Ergebnisse nach Parametern leicht gefiltert werden können.

Unterstützung für Open Enclave – WinDbg Preview kann jetzt Open Enclave (OE)-Anwendungen debuggen, um weitere Informationen zu erhalten, siehe Open Enclave Debugging).

ELF Core Dumps - Im Rahmen der Unterstützung von Open Enklave kann WinDbg ELF-Kernabbilder und Binärdateien sowie ZWERGsymbole (ZWERG 5 wird derzeit nicht unterstützt) von Enklaven und Linux-Anwendungen öffnen. Beim Öffnen eines Kernabbilds aus einer Nicht-Windows-Anwendung sollten grundlegende Fenster und Befehle ordnungsgemäß funktionieren, aber die meisten Erweiterungen und Windows-spezifischen Befehle funktionieren nicht. ELF- und ZWERG-Dateien werden von Symbolservern heruntergeladen, die den hier definierten Schlüsselkonventionen folgen. Enklaven sind das einzige unterstützte Szenario, aber wir sind offen für Feedback zum Öffnen anderer Linux-Kernabbilder.

TTD-Dateiformatänderung – Wir haben ein großes Update für das Dateiformat für TTD-Ablaufverfolgungen vorgenommen, die die Kompatibilität nach vorne brechen. Frühere Versionen von WinDbg Preview können mit diesen (und zukünftigen) Versionen von WinDbg Preview aufgezeichnete Ablaufverfolgungen nicht öffnen, aber diese (und zukünftige) Versionen können sowohl neue als auch alte Ablaufverfolgungen öffnen.

Weitere Änderungen

  • TTD verwendet nun das 64-Bit-Modul für die Indizierung und die entsprechende Debuggermodulbitanzahl für Wiedergaben, um potenzielle Speicherprobleme beim Indizieren und SOS-Problemen bei der Wiedergabe zu minimieren.
  • Wenn Sie "dx" ohne Parameter ausführen, wird nun der Stammnamespace angezeigt, um die Durchlässigkeit zu erleichtern.
  • Sie können nun das Standardsymbol und den Quellcachespeicherort über das Menü "Einstellungen" ändern.
  • Verbesserte Unterstützung für die Aufzeichnung von AVX-512 (Aufzeichnung von AVX-512 führt zu einer größeren als normalen Verlangsamung).
  • Wir haben die Offlinelizenzierung aktiviert.

1.0.1905.12001

Verbesserungen bei der SymSetDiaSession-Fehlerminderung – Unser Fix im letzten Monat, um den Fehler zu beheben, der durch Anwendungen verursacht wird, die DbgHelp in unseren Prozess einfügen, funktionierte in einigen Szenarien noch nicht. Wir haben Verbesserungen daran vorgenommen und werden weiterhin Feedback zu diesem Fehler überwachen.

Anpassung der Akzentfarbe – Für viele Szenarien sind mehrere Instanzen von WinDbg geöffnet, und das Hin- und Herwechseln zwischen ihnen kann verwirrend sein und einige Zeit in Anspruch nehmen, um herauszufinden, welches die "richtige" ist. Wir haben die Möglichkeit hinzugefügt, die blaue Akzentfarbe zu ändern, um Sitzungen visuell zu unterscheiden und den Austausch zwischen ihnen zu vereinfachen.

Wählen Sie einfach das Menüband "Ansicht" aus, und wählen Sie im letzten Abschnitt eine Option für Akzentfarbe aus. Wenn zukünftige Sitzungen von den letzten Zielen gestartet werden, wird die Akzentfarbe im Rahmen des Zielarbeitsbereichs beibehalten.

Verbesserungen bei der Quelltokenisierung – Das Quellfenster verfügt jetzt über grundlegende Unterstützung für die Tokenisierung von Rust-Quelldateien und C++ SEH __try/__except/__finally/__leave.

Coroutine-Verbesserungen – Verbesserte Unterstützung für lokale Coroutine-Variablen und bestimmte optimierte Variablen.

Standardsymbol- und Quellcacheeinstellung – Option zum Menü "Einstellungen" unter "Debugeinstellungen " hinzugefügt, um den Cachespeicherort für Symbole zu ändern. Hinweis : Es gibt ein bekanntes Problem, das dazu führt, dass das Laden der Quelle fehlschlägt. Wir werden eine Überprüfung hinzufügen, um dies in einer zukünftigen Version zu verhindern.

-pv-Fixes - Ein Fehler wurde behoben, der -pv (nicht-invasives Anfügen) unter bestimmten Umständen daran gehindert hat, zu funktionieren.

1.0.1904.18001

Behebung des SymSetDiaSession-Fehlers – Wir haben eine Weile einen Fehler gemeldet, der verhindert, dass WinDbg Preview in einigen Situationen gestartet wird. Es gibt einige externe Anwendungen, die versuchen, eine Version von DbgHelp in unseren Prozess einzufügen, bevor wir sie laden. Einige von ihnen verwenden eine Version von DbgHelp mit fehlender Funktionalität, was diesen Fehler verursacht, wenn wir versuchen, diese Features zu verwenden. Wir haben hierfür einen Fix hinzugefügt und werden nachverfolgen, wenn es noch Szenarien gibt, in denen sie auftritt.

Schriftartsteuerelement – Wir haben Einstellungen zum Steuern der Schriftart und des Schriftgrads hinzugefügt. Es gibt zwei verschiedene Einstellungen, eine für Textfenster (mono-leere Fenster wie Demontage, Quelle, Befehl usw.) und eine für Toolfenster (Lokal, Stapel usw.). Es gibt noch einige Bereiche, die von diesen Optionen nicht betroffen sind, die in Zukunft aktualisiert werden.

Hervorhebungsverbesserungen – Die dauerhafte Hervorhebung von Text im Befehlsfenster hebt nun auch Text in den Quell- und Notizenfenstern hervor.

Verbesserungen beim Laden von Quellen – Wir haben geändert, wie das Laden von Quelldateien funktioniert. Beim Öffnen einer Quelldatei waren Modulvorgänge wie das Ausführen zusätzlicher Befehle nicht möglich oder unvorhersehbar. Wir haben uns geändert, wo das Laden stattfindet, um eine bessere Parallelität und zuverlässigere Abbruch von Quellöffnungsvorgängen zu ermöglichen.

Andere Änderungen und Fehlerbehebungen:

  • "Gehe zum Zerlegen" zum Kontextmenü des Quellfensters hinzugefügt.
  • Das Kontrollkästchen "Aktuelle Anweisung folgen" wurde im Demontagefenster hinzugefügt.
  • Es wurde ein Fehler behoben, der dazu führte, dass das Befehlsfenster beim Ausgeben von viel Text langsam ausgeführt wurde.
  • Die BILD-AUF- und BILD-AB-TASTE wurde geändert, um ähnlich wie Visual Studio auszuführen.
  • Wenn eine ASM-Datei im Quellfenster geöffnet wird, enthält sie jetzt grundlegende Kommentare, Zeichenfolgen und Direktivenmarkierung

1.0.1812.12001

Diese Version enthält diese Updates.

Debuggerdatenmodell C++-Header – Es gibt einen neuen C++-Header , DbgModel.h, der als Teil des Windows SDK zum Erweitern des Debuggerdatenmodells über C++ enthalten ist. Weitere Informationen finden Sie in der Übersicht über das Debuggerdatenmodell C++. Diese Version enthält eine neue Erweiterung, die dem Debuggerdatenmodell einige weitere Funktionen im API-Stil hinzufügt, auf die über den Befehl "dx", JavaScript und den neuen DbgModel.h-Header zugegriffen werden kann. Diese Erweiterung erweitert das Datenmodell, um Kenntnisse über Assembly und Codeausführung über den Debugger.Utility.Code-Namespace und das lokale Dateisystem über den Debugger.Utility.FileSystem-Namespace einzuschließen.

Die Erweiterung synthetischer Typen Mit dieser neuen API-Erweiterung haben wir hier ein neues Beispiel auf unserem GitHub-Repository https://github.com/Microsoft/WinDbg-Samples/tree/master/SyntheticTypes- . Diese JavaScript-Erweiterung liest grundlegende C-Headerdateien und definiert synthetische Typinformationen für die im Header definierten Strukturen und Vereinigungen. Über den Dx-Befehl kann der Speicher dann strukturiert angezeigt werden, als ob Sie einen PDB mit Typinformationen für diese Typen hatten.

Andere Änderungen und Fehlerbehebungen:

  • WinDbg Preview wird jetzt intelligenter mit dem Bringen von Quellfenstern oder dem Demontagefenster in den Vordergrund gehandhabt, wenn Sie schritten.
  • Ordnen Sie den Fenstertitel von WinDbg Preview neu an, um wichtige Informationen zu Beginn beim Kerneldebugging zu erhalten.
  • Der abwechselnde Hintergrundkontrast im Befehlsfenster sollte etwas spürbarer sein.

1.0.1810.2001

Diese Version enthält diese Updates.

  • Neues Einstellungen Dialogfeld, auf das über das Menü "Datei" oder über das Menüband "Start" zugegriffen wird.
  • Dialogfeld "Ereignisse und Ausnahmeneinstellungen". In diesem Menü wird geändert, wie der Debugger Ereignisse und Ausnahmen behandelt, das Äquivalent des Dialogfelds "sx"- oder WinDbg-Ereignisfilter. Wählen Sie Einstellungen im Startmenüband aus, und klicken Sie dann links auf "Ereignisse und Ausnahmen", um diese zu verwalten.
  • Verbesserte TTD-Indexer mit besserer Leistung. Dies erhöht die Leistung der Indizierung von TTD-Ablaufverfolgungsdateien, wodurch der Indizierungsprozess (zwischen 2x-10x) viel schneller wird, während Indexdateien viel kleiner (~50 % kleiner) werden. Die Perf-Verbesserungen sind für Ablaufverfolgungen über 4 GB groß oder bei Verwendung eines Computers mit vielen CPU-Kernen (8+) am deutlichsten. Der neue Indexer ermöglicht es, sehr große Ablaufverfolgungen (50 GB+) zu debuggen.
  • Neues DebugArch-Startflagge zum Angeben der Architektur. WinDbg Preview versucht, das Debuggermodul mit der richtigen Bitanzahl an das Ziel zu starten, um das Debuggen von verwaltetem Code besser zu unterstützen. Es gibt Situationen, in denen sie die richtige Bitanzahl nicht bestimmen kann oder Sie die Entscheidung überschreiben möchten. Verwenden Sie "-debugArch x86|amd64", um die Architektur des Debuggermoduls zu steuern.

Andere Änderungen und Fehlerbehebungen:

  • Ein Fehler wurde behoben, der dazu führen würde, dass schwarze Balken in einem Vollbilddebugger mit einem unverankerten Fenster angezeigt werden.
  • Ein Fehler wurde behoben, der dazu führen würde, dass Symboloptionen unbeabsichtigt gelöscht werden.
  • Der Befehlsverlauf wird jetzt beim Starten von zuletzt verwendeten Zielen beibehalten.
  • Im Datenmodellfenster können Sie jetzt Werte bearbeiten.
  • Nicht indizierte TTD-Ablaufverfolgungen sind jetzt klarer, dass sie nicht indiziert sind.
  • Verbesserte Leistung des Lokalen Fensters
  • Eine Menübandschaltfläche zum Speichern der Befehlsfensterprotokolle in einer Datei hinzugefügt.
  • Hinzugefügt. SelectMany(<projektion>) auf den Standardsatz von LINQ-Methoden.

1.0.1807.11002

Diese Version enthält diese Updates.

Automatisches Speichern und Laden von Haltepunkten. Dies ist ein erster Schritt zum Ersetzen von Arbeitsbereichen. Wir beginnen mit dieser Route, indem wir das Speichern und Laden von Haltepunkten aktivieren. Wenn Sie etwas starten, das Sie zuvor über die Registerkarte "Zuletzt verwendet" im Menü "Datei" gedebuggt haben, werden nun die Haltepunkte aus dieser Sitzung geladen. Der Plan besteht darin, diese Funktionalität zu erweitern, um weitere Informationen über Sitzungen hinweg zu erhalten. Hardware-Haltepunkte (ba) und andere verschiedene Eigenschaften für Haltepunkte wie Thread- und Prozesskontexte sowie Bedingungen werden derzeit nicht gespeichert.

Kleinere Änderungen und Fehlerbehebungen:

  • Es wurden Befehlszeilenoptionen -x, -xe, -xd, -xn und -xi hinzugefügt, um die Behandlung von Ausnahmen und Ereignissen zu steuern. Diese Befehlszeilenoptionen verhalten sich genau wie ihre Befehlszählerteile.
  • Das Notizenfenster unterstützt jetzt fett, unterstrichen und kursiv formatiert.
  • Einige Zoom- und Bildlaufprobleme wurden behoben.
  • Wenn Sie Text in den Befehls-, Speicher-, Quellen- oder Demontagefenstern auswählen, wird jetzt eine helle Hervorhebung über andere Instanzen des markierten Texts angezeigt.
  • Ein Fehler wurde behoben, bei dem das Unterbrechen des Symbolladevorgangs dazu führen würde, dass das Laden von Symbolen für die restliche Sitzung fehlschlägt.
  • NatVis wird jetzt beim Neustart einer Sitzung ordnungsgemäß neu geladen.

1.0.1805.17002

Diese Version enthält diese Updates.

Neues Zerlegungsfenster - Das Demontagefenster umfasst jetzt:

  • Wenn Sie nach oben oder unten scrollen, wird immer mehr Demontage geladen.
  • Syntaxmarkierung für Zahlen, Codeadressen und Opcodes.
  • Wenn Sie ein Codesymbol auswählen, springt das Demontagefenster an diese Position.
  • Wenn Sie auf Zahlen zeigen, wird eine QuickInfo angezeigt, die diese Zahl in andere Basis konvertiert.
  • Kopfzeilen, die den Anfang einer Funktion signieren.

Schnelleres Quellfenster – Das Quellfenster wurde aktualisiert, um schneller und ressourceneffizienter zu sein.

Kleinere Änderungen und Fehlerbehebungen:

  • Behobene Probleme beim Zwischenspeichern von Symbolen
  • Es wurden einige Fälle behoben, in denen der anfängliche Umbruch nicht verwendet werden konnte, wenn das Ziel nicht unterbrochen wurde.
  • Wenn Sie im Befehlsfenster auf die Registerkarte klicken, die nichts verfügbar ist, bleibt der Cursor nun im Eingabefeld.
  • WinDbg Preview erkennt nun die Bitanzahl beim Öffnen von CAB-Dateien automatisch.

1.0.1804.18003

Diese Version enthält diese Updates.

Verbesserungen bei Symbolstatus und Abbruch – Es gibt Zeit, in der der Debugger beschäftigt Ladesymbole anzeigt, und es ist schwierig zu bestimmen, was es tut und warum, ohne dass !sym laut aktiviert ist. Wir haben WinDbg Preview aktualisiert, um eine bessere Kommunikation darüber zu erhalten, was beim Laden von Symbolen geschieht, um Probleme zu beheben. Zusätzlich dazu, genau zu sehen, was passiert, haben wir einige Änderungen vorgenommen, die das Abbrechen von Symbolen zuverlässiger machen sollten, und das Fenster "Protokolle" enthält einige der Details, die normalerweise ausgegeben werden, wenn !sym laut aktiviert ist. Wenn Sie auf "Ansicht" klicken –> Protokolle erhalten Sie das vollständige laute Symbol, das die Ausgabe lädt, ohne sie einschalten zu müssen, und versuchen, die Symbole neu zu laden.

Experimentelles Notizenfenster – WinDbg Preview verfügt jetzt über ein Fenster zum Erstellen von Notizen. Klicken Sie einfach auf "Ansicht" –> "Notizen", um sie zu öffnen. Wenn Sie sie kopieren/einfügen, bleiben DML-Links erhalten und funktionieren weiterhin so, als ob es sich um das Befehlsfenster handelt. Sie können Notizendateien auch im Menüband "Notizen" speichern und laden, wenn das Fenster geöffnet ist.

Experimentelles schnelleres Quellfenster – Um die Leistung von WinDbg Preview zu verbessern, gibt es ein experimentelles neues Quellfenster , das ziemlich effizienter ist. Es gibt immer noch einige Lücken bei Kontextmenüs und Syntaxheraushebungen, aber wir möchten jedem die Möglichkeit geben, es auszuprobieren, bevor es fertig ist, uns frühzeitig Feedback zu geben. Führen Sie $UseFastSourceWindow aus, um sie zu verwenden. Wenn Sie zum alten zurückkehren möchten, führen Sie $UseMonacoSourceWindow aus. Die Einstellung wird sitzungsübergreifend beibehalten, Sie müssen Quellfenster schließen und erneut öffnen, um die neue Version zu erhalten.

JSProvider API Version 1.2 – Für JavaScript-Erweiterungen, die unterstützung für API Version 1.2 deklarieren:

  • Jedes Objekt mit einer .compareTo-Methode, die das Skript verlässt, verfügt über einen benutzerdefinierten Vergleichsoperator (Vergleichsoperatoren funktionieren im DX-Evaluator und an anderer Stelle: z.B.: IModelObject::Compare)
  • Jedes Objekt mit einer .equals-Methode, die das Skript verlässt, verfügt über einen benutzerdefinierten Gleichheitsoperator (== und != funktioniert im DX-Evaluator und an anderer Stelle: IModelObject::IsEqualTo)
  • Systemeigene oder Datenmodellobjekte, die das Skript eingeben, verfügen über .compareTo und .equals, die den Zugriff auf benutzerdefinierte Vergleichs- oder benutzerdefinierte Gleichheitsimplementierungen ermöglichen.

Kleinere Änderungen und Fehlerbehebungen:

  • .server listet nun vollqualifizierte do Standard name for easier use when there's do Standard Probleme bei Kurznamen auf.
  • STRG+G funktioniert jetzt im Quellfenster.
  • Adressleiste zum Demontagefenster hinzugefügt.
  • WinDbg Preview behandelt jetzt _NT_SYMBOL_PATH erwartungsgemäß.
  • Befehlszeilenoption "-server" hinzugefügt.
  • TTD-Datenmodellabfragen können jetzt schrittweise angezeigt werden. Wenn Sie sie unterbrechen, werden weiterhin einige Ergebnisse angezeigt. Dieses Feature ist weiterhin experimentell und optional. Führen Sie die Ausführung dx @$cursession.TTD.AsyncQueryEnabled = 1 aus, um sie zu aktivieren.
  • Der Befehl "dps" enthält jetzt Links zu den Quelldateien, auf die verwiesen wird.

1.1801.19001.0

Diese Version enthält diese Updates.

Textmarkierung – Jetzt können Sie alle Instanzen von markiertem Text direkt im Debugger hervorheben. Um dieses Feature zu verwenden, markieren Sie einfach text im Befehlsfenster, und wählen Sie dann im Befehlsmenüband "Hervorheben" aus, oder drücken Sie STRG+ALT+H. Wenn Sie einen dieser Elemente auf bereits hervorgehobenen Text verwenden, wird die Hervorhebung entfernt.

Wenn Sie die Verwendung von Befehlen bevorzugen, können Sie den Befehl "$hl" verwenden:

$hl ["someValueHere"] - Hervorheben von Text (oder Aufheben der Hervorhebung, wenn bereits hervorgehoben)

$hl clearAll – Alle hervorgehobenen Einträge löschen

$hl caseSensitive [1|0] - Festlegen des Hervorhebungsabgleichs auf Die Groß-/Kleinschreibung oder Groß-/Kleinschreibung wird nicht beachtet (Standardmäßig wird die Groß-/Kleinschreibung nicht beachtet)

Diese Version enthält auch einige kleinere Fehlerbehebungen.

1.1712.15003.0

Diese Version enthält diese Updates.

TTD-Speicherabfragen – Sie können ttD jetzt für Speicherzugriffe abfragen, die der Abfrage nach Anrufen heute ähneln. Auf diese Weise können Sie alle Lese-, Schreib- und Ausführungsvorgänge finden, die auf einen bestimmten Speicherbereich zugreifen.

Beispiel für Lese- und Schreibzugriff: dx @$cursession.TTD.Memory(startAddress, endAddress, "rw")

Eindeutiges Ausführungsbeispiel: dx @$cursession.TTD.Memory(startAddress, endAddress, "ec")

Einstellungen Änderungen – WinDbg Preview speichert jetzt automatisch Einstellungen zwischen Sitzungen, einschließlich Des Symbolpfads und Quellpfads.

JavaScript-Verbesserungen

  • 64-Bit-Zahlen und Numerische in JavaScript enthalten nun eine Modulomethode, die einen echten 64-Bit-Modulo-Vorgang ermöglicht.
  • Objekte, die in JavaScript definiert sind, können jetzt einen benutzerdefinierten, vergleichbaren oder gleichstellbaren Begriff implementieren, der mit standardmäßigen C++-Operatoren oder LINQ-Vorgängen in dx funktioniert. Um dies zu nutzen, muss das Skript im InitializeScript-Array deklarieren, das eine neue Version der Host-API unterstützt, indem ein Datensatz "new host.apiVersionSupport(1, 2)" eingefügt wird. Nachdem Sie dies getan haben, können Sie diese Funktionen in einer beliebigen LINQ- oder Datenmodellfenster-LINQ-Abfrage verwenden. Wenn die Methode .compareTo(other) implementiert, ist sie vergleichbar (Vergleichsoperatoren arbeiten in dx und LINQ). Wenn die Methode einen negativen Wert zurückgibt, z. B. "diese < andere". Wenn die Methode null zurückgibt, "this == other". Wenn die Methode einen positiven Wert "this > other" zurückgibt. Wenn die Methode .equals(other) implementiert, ist sie gleichbedeutend (== Arbeiten in dx und LINQ). Die Methode muss entweder "true" oder "false" zurückgeben.

Kleinere Änderungen und Fehlerbehebungen:

  • Ein Fehler wurde behoben, bei dem die Stapel- und lokalen Fenster während des Startdebuggings nicht funktionierten.
  • Die Ausgabe von LM wurde aktualisiert, um ProductVersion und ähnliche Felder genauer zu melden.
  • Aktiviert die Schaltfläche "Rückschritt" während TTD-Sitzungen
  • Unterstützung für -lsrcpath hinzugefügt
  • Die Kopfzeilen in den Gebietsschema-, Überwachungs- und Modellfenstern werden beim Scrollen nach unten nicht mehr ausgeblendet.
  • Wenn ALT+TAB zurück zur WinDbg Preview-Ansicht wechselt, behält das Befehlsfenster die Cursorposition ordnungsgemäß bei
  • Tastenkombination STRG+ALT+V für das Umschalten des ausführlichen Modus hinzugefügt
  • Sie können jetzt den automatischen Bildlauf des Befehlsfensters deaktivieren, indem Sie die Befehlsfensterregisterkarte auswählen und gedrückt halten (oder mit der rechten Maustaste darauf klicken) und "Automatisches Scrollen deaktivieren" auswählen.
  • Sie können jetzt untergeordnete Prozesse über die ausführbare ausführbare Seite "Erweitert starten" debuggen.

1.0.14.0

Diese Version enthält diese Updates.

Verbesserte Prozessservererfahrung – Eine neue Benachrichtigung im Menü "Datei", um anzuzeigen, mit welchem Prozessserver Sie verbunden sind und mit dem Sie interagieren, wurde hinzugefügt. Im Rahmen dieser Änderungen bleibt die Prozessserververbindung beim Beenden einer Debugsitzung erhalten und kann im Menü "Datei" getrennt werden.

Neue vordefinierte Layoutoptionen im Menüband "Ansicht" – Im Menüband "Ansicht" gibt es eine neue Option "Layouts". Zurzeit gibt es drei Layouts: die Standardeinstellung, eine, die sich auf die Demontage konzentriert, und ein Minimum.

Menüband "Time Travel Debugging" – Es gibt ein erweitertes Time Travel-Menüband , das beim Debuggen einer Zeit-Reisedebugging-Ablaufverfolgung angezeigt wird.

Metadaten aus JavaScript-Skripts – JavaScript-Erweiterungen können jetzt Metadaten für Eigenschaften und andere Konstrukte zurückgeben. Dies bedeutet, dass die Erweiterung Hilfezeichenfolgen bereitstellen kann, die Anzeigeradiix für Werte und vieles mehr angibt. Metadaten werden bereitgestellt, indem ein Metadatendeskriptor für ein Objekt entweder über das Vorhandensein von Symbol.metadataDescriptor oder durch einen expliziten Aufruf von host.metadata.defineMetadata bereitgestellt wird. Funktion gibt Werte zurück, iterierte Werte und andere Wertkontexte können Metadaten für ihren Wert über host.metadata.valueWithMetadata zurückgeben.

Aktualisierungen der JavaScript-API – Einige änderungen an den APIs auf der Quellebene wurden innerhalb des JavaScript-Anbieters vorgenommen (einschließlich neuer projizierter Methoden und Eigenschaften für systemeigene Objekte). Vorhandene Erweiterungen sehen keine der potenziell unterbrechenden Änderungen, ohne anzugeben, dass sie eine neue Version der JsProvider-API unterstützen. Die Unterstützung für die neue API-Version wird angegeben, indem ein host.apiVersionSupport-Eintrag in das Array platziert wird, das von InitializeScript mit einem Anspruch der unterstützenden Version 1.1 zurückgegeben wird. Vielleicht? .. mit einem Wert, der die Unterstützung für Version 1.1 angibt.

Zu den Änderungen in API Version 1.1 gehören:

  • host.getModuleSymbol und host.getModuleType geben NULL zurück, wenn sie das Symbol nicht finden können, anstatt eine Ausnahme zu auslösen.
  • Alle systemeigenen Objekte weisen zusätzlich zu .targetLocation die Adresseigenschaft auf. Wenn das Objekt keine Adresse hat, wird beim Zugriff auf die Eigenschaft eine Ausnahme ausgelöst.
  • Alle systemeigenen Objekte verfügen über neue .getObjectValue- und .setObjectValue-Methoden, um auf Eigenschaften für das Objekt zuzugreifen, die möglicherweise mit Namen von JavaScript-Orten im Objekt in Konflikt stehen (z. B. "address").

Zusätzliche JavaScript-Änderungen

  • JavaScript-Erweiterungen können nun Eigenschaften für Datenmodellobjekte über Object.defineProperty und den Löschoperator hinzufügen und entfernen. Das Hinzufügen oder Registrieren einer JavaScript-Klasse als übergeordnetes Modell oder Typsignatur ist weiterhin die stark bevorzugte Methode zum Bearbeiten des Objektmodells.
  • JavaScript-Erweiterungen können jetzt globale Variablen innerhalb von Modulen im Debugziel über eine neue host.setModuleSymbol-API ändern.
  • Alle mathematischen Funktionen, die sich im 64-Bit-Bibliothekstyp befinden (z. B.: .add, .subtrahieren, multiplizieren, .dividieren usw....) sind jetzt auch für JavaScript-Zahlen vorhanden.
  • JavaScript-Funktionen und -Eigenschaften können jetzt Werte zurückgeben, die über benutzerdefinierte Marshaling Enumerationen sind. Ein Funktions- oder Eigenschaftenaccessor kann host.typeSystem.marshalAs(value, type...) zurückgeben, um eine solche benutzerdefinierte Marshaling zu erzeugen.
  • Der Haltepunktbefehl im Skriptdebugger kann nun zusätzlich zu Zeilen-/Spaltenpositionen auf Funktionsnamen umgebrochen werden.
  • Type objects in JavaScript extensions have access to their containing module through the .containingModule property.

Kleinere Änderungen und Fehlerbehebungen:

  • Die Formatierung von bedingten Menübandregisterkarten wurde behoben, um weniger verwirrend zu sein.
  • Überarbeitete DML, um bei der Analyse strenger zu sein, um die Leistung zu verbessern.
  • Verschiedene Korrekturen mit der Leistung und dem Verhalten von STRG+F.
  • Beim Ausführen von nicht erhöhten Rechten vor dem Versuch, TTD zu verwenden, wurde eine Warnung hinzugefügt.
  • Die Option zum Außerkraftsetzen der automatischen Zielbitheitserkennung wurde hinzugefügt.
  • Deaktiviert verschiedene Dateimenü- und Menübandoptionen, wenn sie nicht verwendet werden können (z. B. "Los" in einer Speicherabbilddatei).

Bekannte Probleme:

  • SOS funktioniert nicht bei x86-Ablaufverfolgungen.

1.0.13.0

Diese Version fügt time Travel Tracing hinzu. Mit time Travel Debugging können Sie einen Prozess aufzeichnen und später sowohl vorwärts als auch rückwärts wiedergeben. Time Travel Debugging (TTD) kann Ihnen helfen, Probleme einfacher zu debuggen, indem Sie die Debuggersitzung "zurückspulen" können, anstatt das Problem reproduzieren zu müssen, bis Sie den Fehler gefunden haben. Weitere Informationen finden Sie unter Time Travel Debugging – Übersicht.

1.0.12.0

Diese Version war die erste Version von WinDbg Preview. Allgemeine Informationen zu den In WinDbg Preview verfügbaren Features, Hauptfunktionen von WinDbg.

Weitere Informationen

WinDbg – Installation

WinDbg – Startoptionen für die Befehlszeile