Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
WinDbg-Logo mit einer Lupe, die Bits inspiziert.
Dieser Artikel enthält Informationen zu den Neuerungen in WinDbg. Frühere Versionen wurden als WinDbg Preview veröffentlicht.
1.2511.21001.0
Neue Funktionen
- Verbesserte Dateiauswahl mit prioritätsbasierter Behandlung, die auf CAB-Dateien und -Ordner erweitert wurde, um eine bessere Zielbestimmung für Dumpdateien zu ermöglichen
- Verbesserte Downloads von ELF-, DWARF- und Mach-O-Symboldateien mit erweiterten Protokollierungs- und Statusmeldungen.
- Die Umgebungsvariable DBGHELP_DIA_PATH hat nun Vorrang vor den derzeit geladenen Modulen für eine bessere Kontrolle der Symbolverarbeitung.
- Verbesserungen bei der Mitgliedsnamenindizierung für eine bessere Symbolnavigation und Suchleistung
Fehlerbehebungen
- Problem behoben, bei dem Speicherschreibvorgänge in Live-Linux-Ziele fehlschlugen
- Behoben: Laden und Funktionalität von DAC- und SOS-Erweiterungen beim Verbinden mit Live-Debugging-Zielen.
- Problem behoben, bei dem angefügte ausführbare Dateien als "imageXXXXXXXX" anstelle von tatsächlichen Namen angezeigt wurden
- Der Downloadcode von NuGet.exe wurde behoben, der durch die negative Cacheimplementierung fehlerhaft geworden war.
- Behobene UI-Verzögerungen bei Verwendung von exdigdbsrv
- Behandlung von WMI-Ausnahmen bei der USB 3.1-Kompatibilitätsüberprüfung der Problemumgehung
- Unrichtige Warnungen (C6518) aus den SAL-Annotationen von wdbgexts.h entfernt
- Fixierte Typinformationen-Anzeige für
char16_tundchar32_tTypen auf Linux-Plattformen
Allgemeine Verbesserungen der Benutzeroberfläche
- Neue Option "Vereinfachtes Menüband hinzufügen", wodurch der vertikale Fußabdruck des Menübands reduziert wird.
- Aktivierte Grafikhardwarebeschleunigung bei Ausführung in RDP-Sitzungen (Remote Desktop Protocol)
- Verbesserte Leistung beim Aktualisieren im Disassembly-Fenster
- Feste DPI-Skalierung für Toolfensterkontextmenüs in verschiedenen Monitorkonfigurationen
- Die Versionsinformationen auf der Seite "Info" sind jetzt auswählbar, um das Kopieren zu erleichtern.
- Entfernte Unterstützung für veraltete IDNA-Technologie (Internationalisierte Domänennamen in Anwendungen)
- Bereinigung des Debuggerprotokolls, um frühe Starteinträge der Anwendung aus dem Erweiterungskatalog und anderen internen Vorgängen auszuschließen
Zeitreise-Debugging (TTD)
- 1.11.553 -> 1.11.567
1.2510.7001.0
Verbesserungen der Benutzeroberfläche und Benutzererfahrung
- Öffnen einer beliebigen Speicherfensterinstanz über das Menüband
Debugging und Leistungsverbesserungen
- Verhinderte das Stehlen von Rückrufen der Prozessinstrumentation, um die Zuverlässigkeit des Debuggings zu verbessern.
- Verbesserter TTD-Variablenverlauf (Time Travel Debugging) mit Tabellenvorzug für eine bessere Datenvisualisierung
- Absturz im Variablenverlauf beim erneuten Verwenden von Generatoren wurde behoben, indem ordnungsgemäße Funktionserfassung sichergestellt wurde.
- Erweiterter Evaluator für mehrdeutige Haltepunkte zur Handhabung komplexerer Debugging-Szenarien
- Leere Publisher-Spaltenanzeige für Store-Anwendungen und PLM-Prozesse wurde behoben
TTD- und Replay-API-Updates
- Befehl
!ttaktualisiert, um eine einzeilige Hilfe und die aktuelle Position bereitzustellen, wenn er ohne Argumente aufgerufen wird, anstatt zum Beginn der Ablaufverfolgung zu wechseln. - Verfügbarkeit des experimentellen REplay-API-SDKs für die externe Integration hinzugefügt
- Erweiterte Methoden des Datenmodells für den Variablenverlauf für einen verbesserten programmgesteuerten Zugriff
- Verschiedene TTD-Replay-Vorgangsoptimierungen und Verbesserungen der Rückrufunterstützung wurden behoben.
Fehlerbehebungen und Stabilität
- Fehlerberichterstattung behoben, bei der fälschlicherweise "Fehler: Der Vorgang wurde erfolgreich abgeschlossen" angezeigt wurde.
- Host-URL-Verarbeitungsprobleme in Fasttfgitview-Befehlen behoben
- Verbesserte Fehlermeldung zur Symbolauflösung, um klareres Feedback zu geben.
- Es wurden Probleme beim Laden von PDBs für flach zugewiesene .NET-Assemblys unter Linux behoben.
- Behebung eines Fehlers beim uninitialisierten Lesezugriff in Debug-Komponenten
- Probleme bei der Dateisuche im Erweiterungskatalog mit kurzen Dateinamen wurden behoben.
1.2508.27001.0
Neue Funktionen
- Es wurde eine Option zum Deaktivieren der Grafikhardwarebeschleunigung für WinDbg hinzugefügt.
-
.AlternateFunctionsNeue Eigenschaft hinzugefügt für<frame>.Attributes.SourceInformation.
Fehlerbehebungen
- Es wurde ein Problem behoben, bei dem die Seite "Debuggen starten " nach dem Öffnen eines Dialogfelds nicht aktualisiert wurde.
- Es wurde ein Problem mit Tab-Menüelementen behoben, die eine Verbindung mit Geräten herstellen, auf die keine UI-Automatisierung zugreifen kann.
- Es wurde ein Problem behoben, bei dem die nicht ausgelassene Befehlseingabe beim Durchsuchen des Befehlsverlaufs verloren ging.
- Feste Mausradbehandlung für einen ordnungsgemäßen reibungslosen Bildlauf (Mäuse mit glatten Rädern und Trackpads).
- Ein irreführendes rekursives Rekursives Step-Over-Verhalten im 32-Bit-x86-Debugging wurde behoben, wenn Funktionsprologe aufgerufen werden
__SEH_prolog4. - Ein Fehler in der
.AllowNugetExeUpdateKonfiguration für NuGet-basierte Erweiterungskataloge wurde behoben. - Ein Fehler beim Lesen von DWARFv5-Symbolen in
.debug_namesTabellen und Namensindizes wurde behoben. - Korrigiertes Schritt-In-Verhalten für Quellleitungen mit mehreren schrittfilterten Aufrufen.
- Der durch eine ungültige
natvisVersionszeichenfolge verursachte Absturz wurde behoben. - Feste Umgebungsblockübertragung für
CreateProcessWdas Remotedebugging. - Feste
!percpuund!allpercpuBefehle für CPU-Zeiger, die dynamisch überalloc_percpuden Linux-Kernel zugewiesen werden. - Ein Problem mit CPU-Nummerierungen in Linux-Kerneldebugsitzungen wurde behoben.
- Fehlende Beschriftungen der Disassemblierungsfensterfunktion für Nichtprogrammdatenbanken (PDB)-Symbolziele wurden behoben.
- Die Behandlung von Platzhalterverlagerungen in ELF-Binärdateien wurde behoben.
- Doppelte Freigabe in der Handhabung von
DW_OP_fbregDWARF-Symbolen behoben. - Die Regression im Speicherabbildsammlungscode wurde behoben, die die vollständige Sammlung von Speicherabbildern bei x64-auf-ARM64-emulierten Prozessen verhinderte.
Allgemeine Verbesserungen der Benutzeroberfläche
- Es wurden Verbesserungen daran vorgenommen, wie WinDbg die Fensterposition wiederherstellen kann, wenn Sie Monitore verschiedener Auflösungen ändern. WinDbg speichert und stellt nun angedockte Positionen wieder her.
- Horizontales Scrollen wurde implementiert, indem Sie das Mausrad verwenden, während Sie die Umschalttaste gedrückt halten.
- Die Auswahl "Ordner öffnen " wurde aktualisiert, um das moderne Dialogfeld zu verwenden.
1.2506.12002.0
Neue Funktionen
WinDbg wird jetzt mit den Konsolenmodusdebuggern ausgeliefert (cdb.exe / ntsd64.exe / kd.exe). Um die Binärdateien voneinander zu unterscheiden und vorhandene Kopien der Tools nicht zu stören, enthalten die Binärdateien den Architekturnamen:
- cdbARM64.exe / cdbX64.exe / cdbX86.exe
- kdARM64.exe / kdX64.exe / kdX86.exe
- ntsdARM64.exe / ntsdX64.exe / ntsdX86.exe
Weitere Features:
- Der Fenstertitel des Datenmodelltools kann über den
$OpenDmoToolwindowBefehl angepasst und auch über das Kontextmenü der Titelleiste geändert werden. - Neue Debuggereinstellung zum Aktivieren paralleler HTTP-Downloads von Symboldateien. Diese Option ist standardmäßig aktiviert.
Fehlerbehebungen
- Es wurde behoben, wie der Zielpfad für Dumpdateien gespeichert wird, die über die Befehlszeile (
-z) geöffnet wurden, damit Sie ihn erfolgreich über das Menü "Zuletzt verwendete Elemente " öffnen können. - Es wurde ein Absturz im Skript-Editor-Fenster behoben.
- Es wurde behoben, wie WinDbg inkonsistente Zeilenende in Quelldateien verarbeitet, die im Quellfenster geöffnet wurden, um eine konsistentere Ansicht der Quelldateien bereitzustellen.
- Es wurde ein Problem behoben, bei dem Anmeldeinformationen für HTTP-Symbolserver nicht erneuert wurden, wenn Sie das neue Feature für parallele Downloads verwenden.
- Es wurde ein Problem behoben, bei dem die Eigenschaften von Datenmodellobjekten in JavaScript-Erweiterungen nicht ordnungsgemäß aufgezählt wurden.
- Es wurde ein Problem behoben, bei dem Spaltentext beim Neuanordnen durch Ziehen verschwunden war.
- Es wurde ein Problem behoben, bei dem das Festlegen der Ereignisfilterung über Befehlszeilenoptionen nicht auf das Debugziel beim Start angewendet wurde.
- Es wurde ein Problem behoben, bei dem manchmal das Abdocken eines Toolfensters zu leeren Inhalten führte.
- Es wurde ein Problem behoben, bei dem minidumps von X64 emulierten Prozessen auf ARM64-Computern nicht gedebuggt werden konnten.
- Es wurde ein Problem behoben, bei dem zweideutige Haltepunkte den Debugger zum Absturz brachten.
- Es wurde ein Problem behoben, bei dem GDBServer beim Beenden des Prozesses beim Debuggen eines Live-Linux-Prozesses abstürzte.
- Es wurden mehrere Probleme im Zusammenhang mit dem Debuggen von JavaScript-Erweiterungen () behoben,
.scriptdebugeinschließlich einer besseren Aufzählung von Eigenschaften und behebung eines Absturzproblems.
Allgemeine Verbesserungen der Benutzeroberfläche
- Richtet das "Befehlsvorschlag"-Popupmenü am Cursor aus. Jetzt werden nur vorgeschlagene Vervollständigungsvorschläge anstelle von allem vor dem Cursor angezeigt.
- Ausführlichere Informationen zum Öffnen des Debugzielfehlerdialogs. Für Fehler beim Öffnen des Speicherabbilds wurde ein Link zu einer TSG-Datei bereitgestellt, die nicht geöffnet werden konnte.
- Die Titelleisten des Toolfensters haben dasselbe Kontextmenü wie ihre angedockte Registerkarte.
- Es wurden visuelle Verbesserungen an den Fenstern "Lokal", " Überwachung" und "Modell " vorgenommen.
- Das Time Travel Debugging (TTD) wurde auf Version 1.11.532 aktualisiert. Weitere Informationen finden Sie in den TTD-Versionshinweisen.
1.2502.25002.0
Neue Funktionen
Befehlsfenster IntelliSense
Die Eingabeaufforderung zeigt automatisch vorgeschlagene Vervollständigungen an, wenn das erste eingegebene Zeichen . (Punkt), ! (Ausrufezeichen) oder $ (Dollarzeichen) ist.
Vorschläge können auch mit der Befehlsverknüpfung STRG+LEERTASTE aufgerufen werden.
Momentaufnahmendebugging
Wenn WinDbg Liveprozesse lokal debuggt, kann es auch Momentaufnahmen des Prozesses erstellen. Verwenden Sie die Symbole auf der Registerkarte "Erweiterungen ", um zwischen Momentaufnahmen und dem Liveprozess zu wechseln.
Ebenso kann sich WinDbg mit einer Prozessmomentaufnahme eines Prozesses verbinden, ohne den Prozess über eine snapshot:pid=<process pid in hex> Protokollzeichenfolge anzuhalten Connect to remote debugger.
Neue Datenmodell-APIs
Debugger.Utility.Symbols.GetTypeInformationGibt die Typinformationen zurück, die einem objekt zugeordnet sind, das übergeben wird. Ein optionales Argument ermöglicht die automatische Dereferenzierung (eine Ebene) von Zeigern, wenn der Typ, der unter einem beliebigen Zeiger (oder Verweis) liegt, benötigt wird.
Debugger.Utility.Control.CreateStepFilter(<Type>, <Pattern>)Erstellt einen neuen Schrittfilter im Namespace neben allen Haltepunkterstellungs-APIs.
Debugger.State.StepFiltersGibt die Liste der Schrittfilter zurück, die die Eigenschaften
Id,Description,Type,PatternundIsEnabled. Es gibt eine.Remove()Methode für Schrittfilterobjekte.
Verbesserte CLR-Debugerfahrung ohne clrcomposition.dll
Die weiterverteilbare Komponente dbgeng.dll verbessert die Stack-Walking-Unterstützung für Common Language Runtime (CLR)-Frames, ohne dass clrcomposition.dll vorhanden sein muss.
Zufällige Verbesserungen
- Verbesserte Unterstützung für das Linux-Kerneldebugging (insbesondere für 6.11+ Kernel).
- Unterstützung für komprimierte ZSTD-KDUMP-Seiten hinzugefügt.
Fehlerbehebungen
- Serverbetriebssystem (SOS) auf Version 9.0.557512 aktualisiert.
- Es wurde ein Leistungsrückschritt bei der Prüfung auf widerrufene Signaturen beim Laden der msdia140.dll behoben.
- Der Absturz beim Lesen des XSTATE-Kontexts wurde behoben.
- Behebung des Problems mit der Hervorhebung deaktivierter Haltepunkte im Disassembly-Fenster, um sie von aktivierten Haltepunkten zu unterscheiden.
- Ein Absturz beim Schließen eines schwebenden Toolfensters wurde behoben.
- Es wurde ein Problem behoben, bei dem die aktuelle Position des Zeitachsenfensters nach dem Öffnen einer letzten Ablaufverfolgung nicht immer aufgefüllt wurde.
- Es wurde ein Problem in den Fenstern "Disassembly " und "Memory " behoben, das nicht immer aktualisiert wurde, nachdem ein neuer Wert eingegeben wurde.
- Das Farbschema der Titelleiste im dunklen Design wurde korrigiert.
- Die Präsentation der zurückgestellten Haltepunkte im Haltepunktfenster wurde behoben, wobei
0x0anstelle des ursprünglichen Ausdrucks angezeigt wurde, der beim Erstellen eingegeben wurde. Es verfügt auch über ein eindeutiges Symbol, das angibt, dass es nicht gebunden ist. - Es wurde ein Problem in den Fenstern "Lokal" und " Überwachung " behoben, bei dem das Rechtsklick auf ein sichtbares Element dazu führte, dass die Ansicht nach oben verschoben wurde.
- Behobene Probleme mit
natvis. Weitere Informationen finden Sie im ursprünglichen Fehlerbericht. - Wurde
kdDebuggerspam mit NachrichtError getting port connector informationbehoben. Weitere Informationen finden Sie im ursprünglichen Fehlerbericht. - Ein Problem wurde behoben, bei dem
gcbedingte Haltepunkte auslöste, wenn die Bedingung falsch war. - Ein Problem wurde behoben, sodass YMM- und ZMM-Register jetzt angezeigt werden können, wenn Sie eine TTD-Ablaufverfolgung debuggen.
Korrekturen zur Barrierefreiheit
- Verbesserte Tastaturnavigation für die Fenster "Lokal", "Überwachung" und "Haltepunkte".
- Verbesserte visuelle Lesbarkeit des Menübands und der Fenster Locals, Watch und Breakpoints.
- Verbesserte Benutzerfreundlichkeit der Bildschirmsprachausgabe für die Fenster "Locals", "Watch" und "Breakpoints".
- Beibehalten des vorherigen Tastaturfokus, der Auswahl und des Bildlaufs, wenn möglich, zum Bearbeiten von Elementen in den Fenstern "Lokale", "Beobachten" und "Haltepunkte".
- Verbesserte allgemeine Unterstützung für die Windows-Textskalierung.
Allgemeine Verbesserungen der Benutzeroberfläche
- Es wurde ein Befehl hinzugefügt, um den Fokus von einem Befehlseingabetextfeld in einen Befehlsausgabebereich als Umschaltzeichenmodus (z. B. eine Eingabeaufforderung) zu verschieben. Die Tastenkombination ist STRG+M.
- Es wurde ein Kontextmenüelement "Gehe zur Disassemblierung" zum Fenster "Haltepunkte" hinzugefügt.
- Ein Kontextmenü für das Fenster Disassembly wurde hinzugefügt mit den Optionen Run to Instruction, Set Instruction Pointer, Go to Source und Toggle Breakpoint im aktuellen Status.
Zeitreise-Debugging
- Aktualisiert auf Version 1.11.481.
- Weitere Informationen finden Sie in den TTD-Versionshinweisen.
1.2410.11001.0
Einschneidende Änderung
Jetzt wird dbghelp.dll dynamisch mit msdia140.dll verknüpft. Diese Änderung sollte sich nur auf Tools auswirken, die dbghelp.dll weitervertreiben, ohne gleichzeitig msdia140.dll einzuschließen. NuGet-Pakete, die dbghelp.dll enthalten, enthalten auch msdia140.dll.
Fehlerbehebungen
- Es wurde ein Problem behoben, bei dem die Funktionsaliase der Erweiterungsgalerie nicht an die Ladetrigger gebunden waren.
- Es wurde ein Problem behoben, bei dem der Symbolspeicher bei Erhalt eines
ERROR_INTERNET_SECURITY_CHANNEL-Fehlers nicht mehr funktionslos ist. - Es wurde ein Problem behoben, bei dem der Backslash im Befehlsfenster bei nicht-englischen Tastaturlayouts nicht eingegeben werden konnte.
- Es wurde ein Problem behoben, bei dem das Bearbeitungstextfeld in den Fenstern "Lokal", " Überwachung" und "Haltepunkte " nicht zum Cursor scrollen konnte, als der Text länger war als die Spalte, in der er gehostet wurde.
- Priorisiert *.dmp (einzelner Zeitraum) über *.*.dmp (doppelte Zeiträume) für CAB- oder ZIP-Dumps.
Korrekturen zur Barrierefreiheit
- Feste Spaltenbreitenänderung über die Tastatur für Lokale und Überwachungsfenster.
- Verbesserte Tastaturnavigation in WinDbgX.
1.2409.17001.0
Korrekturen zur Barrierefreiheit
Mehrere Probleme wurden bei der Interaktion mit WinDbg unter Verwendung einer Bildschirmlesesoftware behoben.
Fehlerbehebungen
- Ein Problem wurde behoben, bei dem die Deinstallation von WinDbgX das Öffnen von WinDbg (Classic) verhinderte.
- Es wurde ein Problem behoben, bei dem WinDbgX die Größe ändern würde, nachdem sie beim Öffnen angezeigt wurde.
Zeitreise-Debugging
- Auf Version 1.11.429 aktualisiert.
- Weitere Informationen finden Sie in den TTD-Versionshinweisen.
1.2407.24003.0
Neue Funktionen
Neuer JavaScript-Skriptanbieter
Wir versenden nun einen neuen abwärtskompatiblen JavaScript-Anbieter, der auf V8 basiert. Daher können ARM64-Hosts jetzt JavaScript-Erweiterungen verwenden. Die ARM64-Benutzeroberfläche ist jetzt auch standardmäßig auf das ARM64-Modul festgelegt.
Der neue Anbieter ist standardmäßig für alle Architekturen aktiviert. Auf x86 und x64 kann es über die .veighton Befehle .veightoff ein- oder ausgeschaltet werden. In Zukunft planen wir, diese Befehle und den älteren JavaScript-Anbieter zu entfernen.
Erweiterbarkeit der Benutzeroberfläche über den Erweiterungskatalog und das Datenmodell
Debuggererweiterungen mit Erweiterungskatalogmanifesten können jetzt Symbole zur neuen Registerkarte "Erweiterungen " im Menüband "WinDbg" hinzufügen. Wenn Sie diese Symbole auswählen, wird eine Visualisierung einer bestimmten Datenmodellabfrage ausgelöst. Die Erweiterbarkeit wird durch Hinzufügen von Ansichten zum Erweiterungskatalogmanifest erreicht. Eine Ansicht bindet eine Kopplung eines Namens und eines Symbols an eine Datenmodellabfrage und Ansichtsart. Die Dokumentation finden Sie unter Manifest-Dokumentation der Erweiterungsgalerie.
Ausnahmeparameter zum Erweiterungskatalog-Ausnahmeladeauslöser hinzugefügt
Eine Katalogerweiterung kann jetzt basierend auf bestimmten Ausnahmeparameterwerten bedingt geladen werden. Weitere Informationen finden Sie in der Manifestdokumentation des Erweiterungskatalogs.
Konfigurationsoption, um niemals bestimmte Symbole herunterzuladen
Sie können jetzt das Herunterladen von Symbolen für angegebene Bilder überspringen.
Symbols Im Abschnitt Ihrer DbgX.xml Konfigurationsdatei können Sie eine Liste von Symbolen hinzufügen:
<Namespace Name="DisabledSymbolsDownload">
<Setting Name="MSEdge.dll" Type="VT_BSTR" Value=""></Setting>
</Namespace>
Im Debugger können Sie ausführen dx Debugger.Settings.Symbols.DisabledSymbolsDownload , um die aktuelle Liste der Symbole anzuzeigen, die nicht heruntergeladen werden.
Sie können die Liste auch direkt aus dem Debugger ändern:
dx @$curprocess.Modules[1].DisableSymbolDownload()
dx @$curprocess.Modules[1].EnableSymbolDownload()
Neuer Befehl zum Anzeigen von SourceLink-Informationen
Um das Debuggen von Problemen beim Herunterladen von Quellen basierend auf dem eingebetteten SourceLink zu unterstützen, können Sie nun den Befehl !lmsourcesinfo module verwenden, um den Inhalt von SourceLink, den der Debugger verwendet, anzuzeigen.
Allgemeine Verbesserungen der Benutzeroberfläche
Kleine Verbesserungen an Fenstern wie den Modul- und Stapel-Fenstern vorgenommen.
- Die Kopfzeilenspalte wird zum Sortieren von Rasteransichten verwendet.
- Weitere Rechtsklickaktionen sind verfügbar.
- Das Stack-Fenster zeigt Frames bei Bedarf als inlineiert an.
Fehlerbehebungen
- Es wurde ein Problem behoben, bei dem PDBs, die größer als 4 GB sind, nicht über HTTP heruntergeladen wurden. Edge ist ein Beispiel für einen solchen PDB.
- Wir haben ein Problem mit dem Zwischenspeichern im Anbieter für Debugger-Anmeldeinformationen behoben. (Jetzt werden Anmeldeinformationen pro Website zwischengespeichert.)
- Fehler bei den Ladetriggern der Erweiterungsgalerie wurden behoben.
- Ein Fehler wurde behoben, mit
!addressdem ein Absturz verursacht werden konnte. - Fehler in
!heap -a -abehoben, sodass es jetzt funktioniert.
TTD
Weitere Informationen finden Sie in den TTD-Versionshinweisen für Version 1.11.410.
1.2402.24001.0
Neue Funktionen
Live Linux-Debugging
Sie können jetzt einen Linux-Prozess live debuggen. Weitere Informationen finden Sie in den folgenden Artikeln:
Für die vorhersehbare Zukunft erfordert der WinDbg-Client 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. Diese Funktionalität kann den Aufzeichnungsaufwand verringern. Wählen Sie zum Verwenden im Dialogfeld "Konfigurieren und Aufzeichnen " die Option "Teilmenge der Ausführung aufzeichnen" aus. Geben Sie dann die Module an, die aufgezeichnet werden sollen. (Weitere Informationen finden Sie unter "Bekannte Probleme".)
Zur feineren Kontrolle können Sie Ihr Programm genau aufzeichnen, indem Sie eine neue In-Process-Aufzeichnungs-API verwenden. Informationen zum Aufzeichnen Ihres Programms finden Sie in unserem Beispielcode und in der Dokumentation.
Kompaktes Registerfenster
Das neue Registerfenster sieht wie die Ausgabe des r Befehls aus. Das Bearbeiten aus dem neuen Registerfenster wird noch nicht unterstützt.
Neue Parameter für e (Werte eingeben) in Speicherbefehle
Die Speicherbefehle e (Werte eingeben) unterstützen jetzt physische Adressen wie die Speicherbefehle d (Speicher anzeigen). Diese Optionen werden nur im Kernelmodus unterstützt.
| Option | Beschreibung |
|---|---|
/p |
Verwendet physikalische Speicheradressen für die Anzeige. Der durch Bereich 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 eckigen Klammern um c müssen mit eingeschlossen werden. |
/p[uc] |
Identisch mit /p, außer dass nicht zwischengespeicherter Speicher gelesen wird. Die eckigen Klammern um uc müssen mit eingeschlossen werden. |
/p[wc] |
Identisch mit /p, außer dass der zusammengeführte Speicher gelesen wird. Die eckigen Klammern um wc müssen mit eingeschlossen werden. |
Weitere Informationen finden Sie unter e, ea, eb, ed, eD, ef, ep, eq, eu, ew, eza (Werte eingeben).
Fehlerbehebungen
- Unterstützung von Rust-Namensentschlüsselung im Linux-Debugging hinzugefügt.
- Wir haben Verbesserungen am CLR-Debugging vorgenommen.
- Es wurde die Möglichkeit hinzugefügt, den Stacklauf von CLR-Frames im gemischten Modus zu erzwingen.
-
ForceMixedModeStackWalkerEinstellung hinzugefügt zuconfig.xmloderDbgX.xml. - Hinzugefügt:
!forceclrmixedmodeunwindBefehl für einmalige Ermittlungen oder falls Sie die Konfigurationseinstellung nicht ändern können.
-
- Es wurde die Möglichkeit hinzugefügt, den Stacklauf von CLR-Frames im gemischten Modus zu erzwingen.
- Allgemeine Verbesserungen des CLR-Debuggings unter Linux.
- Es wurden mehrere Probleme in Bezug auf
LinuxKernel.jsund Prozessor spezifische Variablen behoben.- Der Befehl
!runqwurde zuLinuxKernel.jshinzugefügt, um die Ausführungswarteschlangen des Kernel-Schedulers für jede CPU zu bilden (ähnlich wie der Befehl im Linux-Absturzhilfsprogrammrunq). - Verschiedene Befehle in
LinuxKernel.jswurden angepasst, um den Kerneländerungen gerecht zu werden. In neueren Kerneln verwendet der Timerbaum zwischengespeicherte RB-Knoten anstelle von ursprünglichen RB-Knoten. In neueren Kernel-Versionen ist dieall_bdevs-Liste verschwunden, sodass Blockgeräte jetzt vom Superblock aus durchlaufen werden (blockdev_superblock).
- Der Befehl
- Es wurden verschiedene
natvisKorrekturen vorgenommen, um mehr wie die neuesten Versionen von Visual Studio zu funktionieren. - Bevorzugt
sourcelinkim Vergleich zu veraltetensourceinfo.- Der Befehl
!lmsourcesinfo <module>wurde hinzugefügt, umsourcelink-Ströme aus PDBs anzuzeigen (um das Debugging von Problemen mitsourcelinkzu unterstützen).
- Der Befehl
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
Es wurden viele Fehlerkorrekturen und kleine Verbesserungen vorgenommen.
1.2306.12001.0
Es wurden viele Fehlerkorrekturen und kleine Verbesserungen vorgenommen.
1.2303.30001.0
Hinweis
Der Debugger wurde von WinDbg Preview in WinDbg umbenannt.
Der ältere Debugger, der mit Debugtools für Windows veröffentlicht wurde, wird jetzt als WinDbg (Klassisch) bezeichnet.
Time Travel Debugging auf ARM64
WinDbg wird nativ auf ARM64 ausgeführt, und wir haben auch TTD systemeigener ARM64-Prozesse 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, die von MMX bis SSE 4.2, AVX und AVX2 reichen.
Mehrdeutige Haltepunktauflösung
Mehrdeutige Haltepunkte ermöglichen dem Debugger das Setzen von Haltepunkten in bestimmten Szenarien, in denen ein Haltepunktausdruck an mehrere Stellen aufgelöst wird. Weitere Informationen finden Sie unter Mehrdeutige Haltepunktauflösung.
1.2107.13001.0
Regex-Suche
Die WinDbg Preview-Suche enthält jetzt die Option zum Suchen mithilfe regulärer Ausdrücke, die als regex bezeichnet werden. Wenn Sie "regex" im Fenster aktivieren möchten, das Sie durchsuchen möchten, wählen Sie STRG+F aus. Schalten Sie dann die Schaltfläche mit der Beschriftung .* neben dem Suchfeld um.
Eingeschränkter Modus
Der eingeschränkte Modus ist eine optionale Einstellung, die den Typ der Debugsitzungen auf nur Remotedebuggingsitzungen und Dump-Dateien beschränken kann, die WinDbg Preview starten kann. Weitere Informationen finden Sie unter WinDbg: Eingeschränkter Modus.
Unterstützung von Schattenvariablen
In früheren Versionen löst WinDbg den Fehler "Mehrdeutiges Symbol" aus, wenn versucht wird, eine Variable auszuwerten (??) oder anzuzeigen (dx), die ihren Namen mit einer anderen Variablen im Gültigkeitsbereich teilt. WinDbg disambiguiert jetzt Variablen, die den gleichen Namen haben, indem @n an den Variablennamen angefügt wird. Beispiele sind foo@0 und foo@1
Diese Änderung wird auch im Fenster „Locals“ widergespiegelt. Bisher wurde nur die nächste Variable im Bereich angezeigt.
1.2104.13002.0
Intelligente Nummernauswahl und Suche
Ein bequemes Produktivitätsfeature von WinDbg Preview ist die Möglichkeit, Muster im Befehlsfenster zu erkennen. Um Muster zu erkennen, markieren Sie beliebigen Text, und alle anderen Instanzen dieses Texts werden hervorgehoben. Diese Hervorhebung ist nützlich, wenn Sie sich Speichermuster ansehen. Jetzt werden auch gleichwertige Zahlen in anderen Radixen hervorgehoben, unabhängig davon, wie die Zahl in hexadezimaler, dezimaler oder wissenschaftlicher Schreibweise formatiert ist. Weitere Informationen zu Nummerierungsschemas finden Sie untern (Set Number Base).
Beispiel:
Wenn Sie auswählen 0x000001e2fb3f6160, werden alle anderen Instanzen unabhängig vom Format hervorgehoben.
Dieses Feature funktioniert auch mit halb temporären Hervorhebungen. Drücken Sie STRG und doppelklicken Sie auf eine Zahl, um alle ihre Vorkommen hervorzuheben. Auf diese Weise können Sie mehrere wichtige Zahlen im gesamten Befehlsverlauf nachverfolgen. (Um die Hervorhebung zu löschen, wählen Sie STRG aus, und doppelklicken Sie erneut auf die Zahl.) Schließlich funktioniert dieses Feature auch, wenn Sie Zahlen durchsuchen, indem Sie STRG+F auswählen.
Erweiterter Quellcodezugriff
Der Quellpfadbefehl .srcpath, .lsrcpath (Set Source Path) wurde aktualisiert, um das neue Tag DebugInfoDeinzuschließen. Weitere Informationen finden Sie im erweiterten Quellcodezugriff.
Host- und Gastzustände von WOW-Prozessen im Datenmodell
Wenn Sie einen 32-Bit-WOW-Prozess aus einem 64-Bit-Kontext debuggen, können Sie jetzt sowohl auf den Host- als auch den Gaststatus innerhalb des Datenmodells zugreifen.
Beispiele des 32-Bit-Gastzustands:
dx @$curprocess.Environmentdx @$curthread.Environmentdx @$curthread.Stack
Beispiele für den 64-Bit-Hoststatus:
dx @$curprocess.NativeEnvironmentdx @$curthread.NativeEnvironmentdx @$curthread.NativeStack
Verbesserungen beim JavaScript-Debuggen
JavaScript, das in der Benutzeroberfläche geladen wurde, verwendet jetzt den .scriptdebug Befehl für das direkte Debuggen in der Konsole. Weitere Informationen finden Sie unter JavaScript-Debuggerskripting: 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 haben die folgenden Verbesserungen bei der Barrierefreiheit vorgenommen:
- Verknüpfungen im Befehlsfenster lassen sich mit der Tastatur anklicken, indem Sie Umschalt+Eingabetaste drücken.
- Verbesserte Tastaturnavigation im Hauptmenü.
- Verbesserte Tastaturnavigation im Menüband.
- Erhöhter Kontrast für UI-Elemente.
Neuer Datenzugriffstyp "Überschreiben" für time Travel Debugging
Time Travel Debugging stellt jetzt einen Datentyp für den Overwrite Datenzugriff bereit. Speicherabfragen wie dx @$cursession.TTD.Memory() z. B. verfügen jetzt über eine weitere Spalte, in der die alten Werte von Schreibvorgängen angezeigt werden.
Weitere Korrekturen, Verbesserungen und Updates
- Es wurde ein Feature hinzugefügt, um eine Problemumgehung für ein USB 3.1-Hardwareproblem automatisch zu erkennen und anzuwenden, wenn sowohl der Kerneldebugginghost als auch das Ziel USB 3.1-Controller sind.
- Neue UI-Verknüpfung hinzugefügt: STRG+UMSCHALT+Auswählen über einen DML-Link kopiert diesen in die Zwischenablage.
1.0.2007.01003
Zeitachsen-Lesezeichen
Markieren Sie wichtige Zeitreisepositionen in WinDbg, anstatt die Position manuell in den Editor zu kopieren und einzufügen. Lesezeichen erleichtern das Anzeigen verschiedener Positionen auf einen Blick in der Ablaufverfolgung im Verhältnis zu anderen Ereignissen und ermöglichen es, diese zu kommentieren.
Sie können einen beschreibenden Namen für Lesezeichen vergeben.
Greifen Sie auf Lesezeichen über das "Zeitachsen"-Fenster zu, das unter Ansicht>Zeitleiste verfügbar ist. Wenn Sie mit dem Mauszeiger auf eine Textmarke zeigen, wird der Name der Textmarke angezeigt.
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.
Modulfenster
In einem neuen Fenster werden Module und die zugehörigen Informationen angezeigt, die über das Menüband "Ansicht" verfügbar sind. Das Fenster "Module" zeigt Folgendes:
- Der Name des Moduls, einschließlich der Pfadangabe.
- Die Größe in Byte des geladenen Moduls.
- Die Basisadresse, an der das Modul geladen wird.
- Die Dateiversion.
Threadnamen/Beschreibungen, die im Livedebugging verfügbar sind
Threadnamen, die von SetThreadDescription festgelegt werden, sind jetzt in den Live-Benutzermodus beim Debuggen verfügbar. Threadnamen stehen mithilfe des ~ Befehls oder des Debuggerdatenmodells zur Verfügung.
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 PDB-Format beschreibt eine Codierung von Debuginformationen, die von Compilern von CLI-Sprachen erstellt und von Debuggern und anderen Tools verwendet werden. Weitere Informationen finden Sie unter Portable PDB-Symbole.
Andere Änderungen und Fehlerbehebungen
- Unterstützung für AMD64- und Linux-Kernelabbilddebugging für WinDbg.
- Durchgeführte Verbesserungen bei der Aufzeichnung von Zeitreisen und anderen Fehlerbehebungen.
1.0.1912.11001
- TTD-Zeitachsen: In einem neuen Fenster wird eine visuelle Darstellung wichtiger Ereignisse in Ihrer Ablaufverfolgung angezeigt: Ausnahmen, Haltepunkte, Funktionsaufrufe und Speicherzugriffe. Zeitachsen öffnen sich automatisch und zeigen Ausnahmen (sofern vorhanden) und Haltepunkte an. Weitere Informationen finden Sie unter WinDbg Preview: Timeline.
- Wechselt zu Standardfensterchrom: Das benutzerdefinierte Fensterchrom, das wir verwendet haben, verursachte einige Skalierungs- und Größenänderungen, sodass wir es jetzt entfernt haben.
- Dateimenü verbesserte Tastaturnavigation: Das Dateimenü ist einfacher, mit nur einer Tastatur zu navigieren.
Andere Änderungen und Fehlerbehebungen
- Deaktiviert die Fenster Stack und Locals, wenn das Target läuft, sodass "Unbestimmter Fehler" nicht angezeigt wird, wenn kein Target vorhanden ist.
- Dem Dialogfeld "Anfügen" wurde eine Spalte "Dienste" hinzugefügt, die Ihnen hilft, die ausgeführten Dienste leicht zu finden.
- Ein Fehler wurde behoben, der dazu führte, dass die Architekturerkennung nicht funktionierte, wenn Anwendungen mit Argumenten geöffnet werden.
- Verbesserte Disassemblierung für das Disassembly-Fenster wenn private Symbole geladen werden.
- Die Schaltfläche "JSProvider laden " wurde aus dem Skriptmenüband entfernt, da jsprovider.dll jetzt automatisch geladen wird.
1.0.1908.30002
- Verbesserungen an TTD-Aufrufenobjekten: Aufrufabfragen umfassen jetzt Parameternamen, Typen und Werte. Wenn Sie Ablaufverfolgungen für Funktionsaufrufe abfragen, können Sie vollständig eingegebene Parameter und deren Werte abrufen. Diese Funktion erleichtert das Filtern von Ergebnissen nach Parametern.
- Unterstützung für Open Enclave: WinDbg Preview kann jetzt Open Enklave-Anwendungen debuggen. Weitere Informationen finden Sie unter Open Enclave Debugging).
- ELF-Kernabbilder: Zur Unterstützung von Open Enclave kann WinDbg ELF-Kernabbilder, Binärdateien und auch DWARF-Symbole öffnen (DWARF 5 wird derzeit nicht unterstützt) sowohl aus Enklaven als auch aus Linux-Anwendungen. Wenn Sie ein Kernabbild aus einer Nicht-Windows-Anwendung öffnen, sollten grundlegende Fenster und Befehle ordnungsgemäß funktionieren, aber die meisten Erweiterungen und Windows-spezifischen Befehle funktionieren nicht. ELF- und DWARF-Dateien werden von Symbolservern heruntergeladen, gemäß den in den SSQP-Schlüsselkonventionen definierten Schlüsselkonventionen. Enklaven sind das einzige unterstützte Szenario, aber wir freuen uns über das Öffnen anderer Linux-Core-Dumps.
- TTD-Dateiformatänderung: Ein Hauptupdate für das Dateiformat für TTD-Ablaufverfolgungen unterbricht die Vorwärtskompatibilität. Frühere Versionen von WinDbg Preview können keine Ablaufverfolgungen öffnen, die mit dieser Version und zukünftigen Versionen von WinDbg Preview aufgezeichnet wurden. Diese Version und zukünftige Versionen können sowohl neue als auch alte Tracing-Dateien öffnen.
Andere Änderungen
- TTD verwendet nun die 64-Bit-Engine für die Indizierung und die entsprechende Bitbreite der Debugger-Engine für Wiedergaben. Mögliche Speicherprobleme beim Indizieren und SOS-Probleme bei der Wiedergabe werden minimiert.
- Wird
dxohne Parameter ausgeführt, zeigt es jetzt den Stammnamespace zur einfacheren Durchsuchbarkeit an. - Das Menü "Einstellungen" verfügt jetzt über Optionen zum Ändern des Standardsymbols und des Quellcachespeicherorts.
- Die Unterstützung für die Aufnahme von AVX-512 (Aufzeichnung von AVX-512 führt zu einer größeren als normalen Verlangsamung) wird verbessert.
- Die Offlinelizenzierung ist aktiviert.
1.0.1905.12001
Verbesserungen bei der SymSetDiaSession-Fehlerminderung: Die Lösung zum Beheben des Fehlers durch Anwendungen, die DbgHelp in unseren Prozess einfügen, funktionierte in einigen Szenarien nicht. Wir haben verbesserungen daran vorgenommen und das Feedback zu diesem Fehler weiterhin überwacht.
Anpassung der Akzentfarbe: Szenarien benötigen häufig mehrere Instanzen von "WinDbg". Das Hin- und Herwechseln zwischen ihnen kann verwirrend sein und einige Zeit 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 erleichtern.
Wählen Sie das Menüband "Ansicht" aus, und wählen Sie im letzten Abschnitt eine Akzentfarbe aus. Wenn zukünftige Sitzungen von den zuletzt verwendeten Zielen geöffnet werden, bleibt die Akzentfarbe Teil des Arbeitsbereichs des Ziels.
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: Wir haben die Unterstützung für lokale Coroutine-Variablen und bestimmte optimierte Variablen verbessert.
Standardsymbol- und Quellcacheeinstellung: Wir haben dem Menü "Einstellungen " unter " Debugeinstellungen " eine Option hinzugefügt, um den Cachespeicherort für Symbole zu ändern. Es gibt ein bekanntes Problem, dass das Leeren dieser Einstellung dazu führt, dass das Laden der Quelle fehlschlägt. Wir planen, eine Überprüfung hinzuzufügen, um zu verhindern, dass dieses Problem in einer zukünftigen Version auftritt.
-pv-Fixes: Wir haben einen Fehler behoben, der das Funktionieren des (nicht-invasiven Anfügens) unter bestimmten Umständen verhindert hat
-pv.
1.0.1904.18001
- Behebung des SymSetDiaSession-Fehlers: Wir hatten Berichte über einen Fehler, der verhindert, dass WinDbg Preview in einigen Situationen geöffnet wird. Einige externe Anwendungen 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 einen Fix für dieses Problem hinzugefügt und planen, sie nachzuverfolgen, um festzustellen, ob es Szenarien gibt, in denen es noch auftritt.
- Schriftartsteuerelement: Wir haben Einstellungen zum Steuern der Schriftart und des Schriftgrads hinzugefügt. Es gibt zwei verschiedene Einstellungen: eine ist für Textfenster (monospace Fenster wie Disassembly, Source und Command) und eine für Toolfenster (z. B. Locals und Stack). Diese Optionen wirken sich nicht auf einige Bereiche aus. Wir planen, sie in Zukunft zu aktualisieren.
- Hervorhebungsverbesserungen: Die dauerhafte Hervorhebung von Text im Befehlsfenster hebt nun auch Text in den Fenstern "Quelle " und "Notizen" hervor .
- Verbesserungen beim Laden von Quellen: Wir haben geändert, wie das Laden von Quelldateien funktioniert. Früher, wenn Sie eine Quelldatei geöffnet haben, waren Engine-Vorgänge wie das Ausführen weiterer Befehle nicht möglich oder unvorhersehbar. Wir haben geändert, wo das Laden stattfindet, um eine bessere Parallelität und einen zuverlässigeren Abbruch von Vorgängen zum Öffnen von Quellen zu ermöglichen.
Andere Änderungen und Fehlerbehebungen
- Dem Kontextmenü des Quellfensters wurde Zu Zerlegung wechseln hinzugefügt.
- Das Kontrollkästchen " Aktuelle Anweisung folgen " wurde im Fenster " Zerlegen " hinzugefügt.
- Ein Fehler wurde behoben, der dazu führte, dass das Befehlsfenster langsam ausgeführt wurde, wenn große Textmengen ausgegeben werden.
- Geänderte BILD-AUF- und BILD-AB-TASTE, um ähnlich wie Visual Studio auszuführen.
- Nehmen Sie Änderungen vor, damit beim Öffnen einer ASM-Datei im Quellfenster jetzt grundlegende Kommentare, Zeichenfolgen und Direktiven hervorgehoben werden.
1.0.1812.12001
Diese Version enthält die folgenden Updates:
-
Debuggerdatenmodell C++-Header: Es gibt einen neuen C++-Header,
DbgModel.hder 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 weitere FEATURES im API-Stil hinzufügt, auf die über dendxBefehl, JavaScript und den neuenDbgModel.hHeader zugegriffen werden kann. Diese Erweiterung erweitert das Datenmodell um Kenntnisse zur Assembly- und Codeausführung über den Debugger.Utility.Code-Namespace und das lokale Dateisystem über den Debugger.Utility.FileSystem-Namespace. -
Erweiterung für synthetische Typen: Mit dieser neuen API-Erweiterung haben wir ein neues Beispiel auf unserem GitHub-Repository. Diese JavaScript-Erweiterung liest grundlegende C-Headerdateien und definiert synthetische Typinformationen für die im Header definierten Strukturen und Vereinigungen. Über den
dxBefehl kann der Speicher dann so strukturiert angezeigt werden, als hätten Sie einen PDB mit Typinformationen für diese Typen.
Andere Änderungen und Fehlerbehebungen
- WinDbg Preview bringt jetzt intelligenter Quellfenster oder das Disassembly-Fenster beim schrittweisen Vorgehen in den Vordergrund.
- Der Titel des WinDbg Preview-Fensters wurde neu angeordnet, 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 die folgenden Updates:
- Es wurde ein neues Dialogfeld "Einstellungen " hinzugefügt, auf das Sie über das Menü " Datei " oder das Menüband " Start " zugreifen können.
- Das Dialogfeld "Ereignisse und Ausnahmeneinstellungen" wurde hinzugefügt. In diesem Menü wird geändert, wie der Debugger mit Ereignissen und Ausnahmen umgeht, das entspricht den Befehlen des
sxoder dem Ereignisfilterdialog von WinDbg. Wählen Sie im Menüband "Start" die Option "Einstellungen" aus. Wählen Sie dann im linken Menü "Ereignisse und Ausnahmen " aus, um Ereignisse und Ausnahmen zu verwalten. - Der TTD-Indexer wurde mit einer besseren Leistung verbessert. Diese Verbesserung erhöht die Leistung der Indizierung von TTD-Ablaufverfolgungsdateien, wodurch der Indizierungsprozess (zwischen 2 mal und 10 Mal) schneller wird, während Indexdateien kleiner werden (~50% kleiner). Die Leistungsverbesserungen sind besonders bemerkbar bei Traces über 4 GB oder wenn Sie einen Computer mit 8 oder mehr CPU-Kernen verwenden. Der neue Indexer erleichtert das Debuggen großer Traces (50 GB+).
- Es wurde ein neues
debugArchStartflag zum Angeben der Architektur hinzugefügt. 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 möchten möglicherweise überschreiben, was sie entscheidet. Verwenden Sie-debugArchx86|amd64, um die Architektur des Debuggermoduls zu steuern.
Andere Änderungen und Fehlerbehebungen
- Ein Fehler wurde behoben, der schwarze Balken in einem Vollbilddebugger mit geöffnetem schwebendem Fenster verursachte.
- Ein Fehler wurde behoben, der dazu führte, dass Symboloptionen unbeabsichtigt gelöscht wurden.
- Der Befehlsverlauf wurde jetzt beim Öffnen von zuletzt verwendeten Zielen beibehalten.
- Unterstützte Bearbeitung im Datenmodellfenster, in dem Sie jetzt Werte bearbeiten können.
- TTD-Traces wurden übersichtlicher gestaltet, da sie nicht indiziert sind.
- Verbesserte die Leistung des Locals-Fensters.
- Es wurde eine Schaltfläche im Menüband hinzugefügt, um die Protokolle des Befehlsfensters in einer Datei zu speichern.
- Zum Standardsatz von LINQ-Methoden wurde
. SelectMany(\<projection\>)hinzugefügt.
1.0.1807.11002
Diese Version enthält die folgenden Updates:
-
Automatisches Speichern und Laden von Haltepunkten: Dieser Schritt ist der erste Schritt zum Ersetzen von Arbeitsbereichen. Sie können jetzt Haltepunkte speichern und laden. Wenn Sie etwas starten, das Sie zuvor über die Registerkarte "Zuletzt verwendet" im Menü "Datei" debuggt haben, werden jetzt die Haltepunkte aus dieser Sitzung geladen. Der Plan besteht darin, diese Funktionalität zu erweitern, um weitere Informationen über Sitzungen hinweg zu erhalten. Hardware-Breakpoints (
ba) und verschiedene andere Eigenschaften in Bezug auf Breakpoints wie thread- und prozessspezifische Kontexte und Bedingungen werden derzeit nicht gespeichert.
Kleinere Änderungen und Fehlerbehebungen
- Befehlszeilenoptionen
-x,-xe,-xd,-xn, und-xizum Steuern der Behandlung von Ausnahmen und Ereignissen hinzugefügt. Diese Befehlszeilenoptionen verhalten sich wie ihre Befehlsentsprechungen. - Unterstützung im Notizenfenster für Fett-, Unterstrichen- und Kursivformatierung hinzugefügt.
- Einige Zoom- und Bildlaufprobleme wurden behoben.
- Es wurde Unterstützung hinzugefügt, damit das Auswählen von Text in den Fenstern "Befehl", "Speicher", "Quelle" oder "Zerlegen" jetzt andere Instanzen des markierten Texts hervorhebt.
- Ein Fehler wurde behoben, bei dem das Unterbrechen des Symbolladevorgangs dazu führte, dass das Laden von Symbolen für die restliche Sitzung fehlschlug.
- Ein Fehler wurde behoben, sodass NatVis jetzt ordnungsgemäß neu geladen wird, wenn eine Sitzung neu gestartet wird.
1.0.1805.17002
Diese Version enthält die folgenden Updates:
Neues Fenster zum Zerlegen: Das Fenster umfasst jetzt:
- Durch das Scrollen nach oben oder unten wird nun kontinuierlich mehr Zerlegung geladen, wann immer dies möglich ist.
- Die Hervorhebung wird verwendet, um die Syntax für Zahlen, Codeadressen und Vorgangscodes zu identifizieren.
- Wenn Sie ein Codesymbol auswählen, springt das Disassemblierungsfenster an diese Position.
- Beim Daraufzeigen über Zahlen wird eine QuickInfo angezeigt, die diese Zahl in andere Basis konvertiert.
- Die Verwendung von Kopfzeilen bedeutet den Anfang einer Funktion.
Schnelleres Quellfenster: Das Quellfenster wurde aktualisiert, um schneller und ressourceneffizienter zu sein.
Kleinere Änderungen und Fehlerbehebungen
- Es wurden Probleme beim Zwischenspeichern von Symbolen behoben.
- Einige Fälle wurden behoben, in denen das Umschalten des initialen Status nicht möglich war, wenn das Ziel nicht integriert war.
- Unterstützung hinzugefügt, sodass der Cursor jetzt im Eingabefeld bleibt, wenn Sie im Befehlsfenster eine Registerkarte mit nichts verfügbar auswählen.
- Unterstützung hinzugefügt, sodass WinDbg Preview jetzt die Bitanzahl automatisch erkennt, wenn es CAB-Dateien öffnet.
1.0.1804.18003
Diese Version enthält die folgenden Updates:
Verbesserungen bei Symbolstatus und Abbruch: Es gibt Zeiten, in denen der Debugger BUSY Ladesymbole anzeigt, und es ist schwierig zu bestimmen, was er tut und warum, ohne
!sym'noisy enabled' aktiviert zu haben. 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 zu Änderungen, mit denen Sie sehen können, was passiert, haben wir auch einige Änderungen vorgenommen, die das Abbrechen von Symbolen zuverlässiger machen. Das Fenster "Protokolle " enthält einige der Details, die normalerweise ausgegeben werden, wenn
!symlaut aktiviert ist. Wenn Sie Protokolle anzeigen>auswählen, erhalten Sie die vollständige Ausgabe des lauten Symbol-Ladevorgangs, ohne ihn aktivieren und versuchen zu müssen, die Symbole erneut zu laden.Experimentelles Notizenfenster: WinDbg Preview verfügt jetzt über ein Fenster zum Erstellen von Notizen. Wählen Sie Ansicht>Notizen aus, um es 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, ist ein experimentelles neues Quellfenster effizienter. Es gibt einige Lücken bei Kontextmenüs und Syntaxheraushebungen, aber wir möchten jedem die Möglichkeit geben, es auszuprobieren, bevor wir es fertig stellen, um uns frühzeitig Feedback zu geben. Führen Sie
$UseFastSourceWindowaus, um es zu verwenden. Wenn Sie zum alten zurückkehren möchten, führen Sie den Befehl aus$UseMonacoSourceWindow. Die Einstellung wird über Sitzungen hinweg 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
.compareToMethode, die das Skript beendet, verfügt über einen benutzerdefinierten Vergleich. (Vergleichsoperatoren funktionieren in der DX-Auswertung und an anderer Stelle. Ein Beispiel istIModelObject::Compare.) - Jedes Objekt mit einer
.equalsMethode, die das Skript verlässt, verfügt über einen benutzerdefinierten Gleichheitsoperator. Die Operatoren==und!=funktionieren im DX Evaluator und an anderer Stelle. Ein Beispiel istIModelObject::IsEqualTo. - Systemeigene oder Datenmodellobjekte, die in das Skript eingehen, sind mit
.compareTound.equalsversehen, was den Zugriff auf benutzerdefinierte Vergleichsimplementierungen oder benutzerdefinierte Gleichheitsimplementierungen ermöglicht.
- Jedes Objekt mit einer
Kleinere Änderungen und Fehlerbehebungen
- Support hinzugefügt, sodass
.serverjetzt zur einfacheren Verwendung ein vollqualifizierter Domänenname aufgelistet ist, wenn es Domänenprobleme bei Kurznamen gibt. - Unterstützung hinzugefügt, damit STRG+G jetzt im Quellfenster funktioniert.
- Dem Fenster "Disassembly" wurde eine Adressleiste hinzugefügt.
- Unterstützung hinzugefügt, damit WinDbg Preview
_NT_SYMBOL_PATHerwartungsgemäß behandelt. -
-serverDie Befehlszeilenoption wurde hinzugefügt. - Unterstützung hinzugefügt, sodass TTD-Datenmodellabfragen jetzt schrittweise angezeigt werden. Wenn Sie ihn unterbrechen, werden weiterhin einige Ergebnisse angezeigt. Dieses Feature ist experimentell und optional. Führen Sie
dx @$cursession.TTD.AsyncQueryEnabled = 1für die Aktivierung aus. - Unterstützung hinzugefügt, sodass der
dpsBefehl jetzt Links zu den Quelldateien enthält, auf die er verweist.
1.1801.19001.0
Diese Version enthält die folgenden Updates:
- Textmarkierung: Jetzt können Sie alle Instanzen von markiertem Text direkt im Debugger hervorheben. Wenn Sie dieses Feature verwenden möchten, wählen Sie im Befehlsfenster Text aus, und wählen Sie dann im Menüband "Befehl" die Option "Hervorheben" aus. Sie können auch STRG+ALT+H auswählen. Wenn Sie eine dieser Optionen für bereits hervorgehobenen Text verwenden, wird die Hervorhebung entfernt.
Wenn Sie Befehle verwenden möchten, können Sie den $hl Befehl verwenden:
$hl ["someValueHere"]: Hervorhebung gibt Text an (oder wenn bereits hervorgehoben).
$hl clearAll: Alle hervorgehobenen Einträge löschen.
$hl caseSensitive [1|0]: Festlegen, ob der Hervorhebungsabgleich groß-/kleinschreibungsempfindlich oder nicht ist. (Bei der Standardeinstellung wird die Groß-/Kleinschreibung nicht beachtet.)
Diese Version enthält auch einige kleinere Fehlerbehebungen.
1.1712.15003.0
Diese Version enthält die folgenden Updates:
TTD-Speicherzugriffe: Sie können TTD jetzt auf ähnliche Weise wie heute bei Anrufen abfragen. Jetzt finden Sie alle Lese-, Schreib- und Ausführungsvorgänge, 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")
-
Beispiel für Lese- und Schreibzugriff:
Einstellungsänderungen: WinDbg Preview speichert jetzt automatisch Einstellungen zwischen Sitzungen, einschließlich Ihres Symbolpfads und Quellpfads.
JavaScript-Verbesserungen
- Die 64-Bit-Zahlen in JavaScript enthalten nun eine Modul-Methode, die eine echte 64-Bit-Modulo-Operation ermöglicht.
- In JavaScript definierte Objekte können jetzt einen benutzerdefinierten vergleichbaren oder gerechten Begriff implementieren. Die Funktionalität wird in
dxentweder mithilfe von C++-Standardoperatoren oder durch LINQ-Vorgänge erreicht. Um diese Funktionalität zu verwenden, muss das Skript iminitializeScriptArray deklarieren, das eine neue Version der Host-API unterstützt, indem ein Datensatznew host.apiVersionSupport(1, 2)eingefügt wird. Anschließend können Sie diese Funktionen in einer beliebigendxODER Datenmodellfenster-LINQ-Abfrage verwenden. Wenn die Methode.compareTo(other)implementiert, ist sie vergleichbar (Vergleichsoperatoren funktionieren indxund LINQ). Wenn die Methode einen negativen Wert zurückgibt, dannthis < other. Wenn die Methode null zurückgibt, dannthis == other. Wenn die Methode einen positiven Wert zurückgibt, dannthis > other. Wenn die Methode.equals(other)implementiert wird, ist es fair (==arbeitet indxund LINQ). Die Methode muss entweder "true" oder "false" zurückgeben.
Kleinere Änderungen und Fehlerbehebungen
- Es wurde ein Fehler behoben, bei dem die Fenster "Stack " und " Locals " während des Startdebuggings nicht funktionierten.
- Die Ausgabe von LM wurde aktualisiert, um
ProductVersionund ähnliche Felder genauer zu berichten. - Die Step Out Back-Schaltfläche wurde während TTD-Sitzungen aktiviert.
- Ab der neuen Version wird
-lsrcpathunterstützt. - Die Kopfzeilen in den Fenstern "Lokal", " Überwachung" und " Modell " wurden behoben, sodass sie beim Scrollen nach unten nicht ausgeblendet werden.
- Unterstützung hinzugefügt, damit bei Verwendung von Alt+Tab zur Rückkehr zu WinDbg Preview die Cursorposition im Befehlsfenster ordnungsgemäß beibehalten wird.
- Für das Umschalten in den ausführlichen Modus wurde die Tastenkombination STRG+ALT+V hinzugefügt.
- Hinzugefügt wurde die Unterstützung, um das automatische Scrollen des Befehlsfensters zu deaktivieren. Halten Sie dazu die Registerkarte "Befehl" ausgewählt (oder klicken Sie mit der rechten Maustaste darauf) und wählen Sie Automatisches Scrollen deaktivieren aus.
- Unterstützung hinzugefügt, sodass Sie jetzt untergeordnete Prozesse über die erweiterte Startseite der ausführbaren Datei debuggen können.
1.0.14.0
Diese Version enthält die folgenden Updates:
- Verbesserte Prozessservererfahrung: Eine neue Benachrichtigung im Menü "Datei " zeigt an, mit welchem Prozessserver Sie verbunden sind und mit dem Sie interagieren. Wenn eine Debugsitzung beendet wird, bleibt im Rahmen dieser Änderungen die Prozessserververbindung bestehen, und Sie können die Verbindung im Menü "Datei" trennen.
- Neue voreingestellte Layoutoptionen im Menüband "Ansicht": Im Menüband "Ansicht" ist eine neue Option "Layouts" verfügbar. Zurzeit gibt es drei Layouts: die Standardeinstellung, eine, die sich auf die Demontage konzentriert, und ein Minimum.
- Menüband „Time Travel Debugging“: Ein erweitertes Menüband „Time Travel“ wird angezeigt, wenn Sie eine TTD-Ablaufverfolgung debuggen.
-
Metadaten aus JavaScript-Skripts: JavaScript-Erweiterungen können jetzt Metadaten für Eigenschaften und andere Konstrukte zurückgeben. Die Erweiterung kann jetzt Hilfetexte bereitstellen, den Anzeigeradix für Werte angeben und vieles mehr. Metadaten werden bereitgestellt, indem ein Metadatendeskriptor auf ein Objekt entweder durch das Vorhandensein von
Symbol.metadataDescriptoroder durch einen expliziten Aufruf vonhost.metadata.defineMetadataplatziert wird. Funktionen, zurückgegebene Werte und andere Wertkontexte können Metadaten für ihren Wert überhost.metadata.valueWithMetadatabereitstellen. -
Aktualisierungen der JavaScript-API: Einige potenziell schwerwiegende Veränderungen auf Quellcode-Ebene wurden an den APIs innerhalb des JavaScript-Providers vorgenommen (einschließlich neuer projizierter Methoden und Eigenschaften von nativen Objekten). 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 angezeigt, indem ein
host.apiVersionSupportDatensatz in das Array aufgenommen wird, das voninitializeScriptzurückgegeben wird und die Unterstützung der Version 1.1 beansprucht.
Änderungen in API Version 1.1
- Die
host.getModuleSymbolFunktionenhost.getModuleTypegeben NULL zurück, wenn sie das Symbol nicht finden können, anstatt eine Ausnahme zu auslösen. - Alle systemeigenen Objekte haben zusätzlich zu
.targetLocationdie Adresseigenschaft. Wenn das Objekt keine Adresse hat, wird beim Zugriff auf die Eigenschaft eine Ausnahme ausgelöst. - Alle systemeigenen Objekte verfügen über neue
.getObjectValueund.setObjectValueMethoden, um auf Eigenschaften für das Objekt zuzugreifen, was möglicherweise mit Namen in Konflikt stehen kann, die JavaScript im Objekt platziert (z. Baddress. ).
Weitere JavaScript-Änderungen
- JavaScript-Erweiterungen können nun Eigenschaften bei Datenmodellobjekten über
Object.definePropertyhinzufügen und mit dem Löschoperator entfernen. Das Hinzufügen oder Registrieren einer JavaScript-Klasse als übergeordnetes Modell oder Typsignatur ist weiterhin die bevorzugte Methode zum Bearbeiten des Objektmodells. - JavaScript-Erweiterungen können jetzt globale Variablen innerhalb von Modulen im Debugziel über eine neue
host.setModuleSymbolAPI ändern. - Alle mathematischen Funktionen, die sich auch im 64-Bit-Bibliothekstyp befinden (z. B.
.add,.subtract,.multiplyund.divide), sind auch in JavaScript-Zahlen vorhanden. - JavaScript-Funktionen und -Eigenschaften können jetzt Werte zurückgeben, die als Enumerationen über benutzerdefiniertes Marshaling verarbeitet werden. Eine Funktion oder ein Eigenschafts-Accessor kann
host.typeSystem.marshalAs(value, type…)zurückgeben, um ein solches benutzerdefiniertes Marshaling zu initiieren. - Der Haltepunktbefehl im Skriptdebugger kann nun zusätzlich zu Zeilen-/Spaltenpositionen auf Funktionsnamen umgebrochen werden.
- Typobjekte in JavaScript-Erweiterungen haben Zugriff auf das enthaltende Modul über die
.containingModuleEigenschaft.
Kleinere Änderungen und Fehlerbehebungen
- Die Formatierung von bedingten Menübandregisterkarten wurde behoben, um weniger verwirrend zu sein.
- Überarbeitete DML, um das Parsen strenger zu gestalten und die Leistung zu verbessern.
- Verschiedene Korrekturen an der Leistung und dem Verhalten von STRG+F durchgeführt.
- Es wurde eine Warnung hinzugefügt, wenn das Programm ohne erhöhte Berechtigungen ausgeführt wird, bevor Sie versuchen, TTD zu verwenden.
- Die Option zum Außerkraftsetzen der automatischen Zielbitheitserkennung wurde hinzugefügt.
- Deaktiviert verschiedene Menü- und Menübandoptionen, wenn sie nicht verwendet werden können (wie z. B. Go bei einer Speicherabbilddatei).
Bekannte Probleme
SOS funktioniert nicht für x86-Ablaufverfolgungen.
1.0.13.0
Diese Version fügt die Zeit-Reiseablaufverfolgung hinzu. Mit Time Travel Debugging können Sie einen Prozess aufzeichnen und später sowohl vorwärts als auch rückwärts wiedergeben. TTD kann Ihnen helfen, Probleme einfacher zu debuggen, indem Sie Ihre 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: Overview.
1.0.12.0
Diese Version war die erste Version von WinDbg Preview. Allgemeine Informationen zu den Features, die in WinDbg Preview verfügbar sind, finden Sie unter "Hauptfeatures von WinDbg".