Udostępnij za pośrednictwem


Informacje o wydaniu

logo WinDbg z lupą badającą bity.

Ten temat zawiera informacje o nowościach w usłudze WinDbg. Wcześniejsze wersje zostały wydane jako WinDbg Preview.

1.2502.25002.0

Nowe funkcje

Funkcja IntelliSense okna poleceń

Monit wprowadzania poleceń automatycznie pokaże sugerowane uzupełnienia, gdy pierwszy wpisany znak to . (kropka), ! (wykrzyknik) lub $ (dolar). Sugestie można również wywołać za pomocą skrótu polecenia Ctrl + Space

Debugowanie migawek

Podczas debugowania procesów na żywo lokalnie, debuger może wykonywać migawki procesu i przełączać się między migawkami a procesem na żywo za pomocą ikon na karcie "Rozszerzenia". Podobnie, debuger może dołączyć do migawki procesu bez jego zawieszenia przez ciąg protokołu snapshot:pid=<process pid in hex> w sekcji "Łączenie się ze zdalnym debugerem".

Nowe interfejsy API modelu danych

  • Debugger.Utility.Symbols.GetTypeInformation

Spowoduje to zwrócenie informacji o typie skojarzonych z dowolnym przekazanym obiektem. Istnieje opcjonalny argument, który umożliwia automatyczną dereferencję (jeden poziom) wskaźników, jeśli naprawdę chcesz uzyskać typ znajdujący się pod dowolnym wskaźnikiem (lub referencją).

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

Tworzy nowy filtr kroku. Znajduje się on w tej przestrzeni nazw sąsiadującej ze wszystkimi API tworzenia punktów przerwania.

  • Debugger.State.StepFilters

Zwraca listę filtrów kroków mających właściwości Id, Description, Type, Pattern oraz IsEnabled. Istnieje metoda .Remove() w obiektach filtru kroków.

Ulepszone doświadczenie debugowania CLR bez clrcomposition.dll

Składnik redystrybucyjny dbgeng.dll ma teraz ulepszoną obsługę przechodzenia po stosie dla ramek CLR, bez konieczności obecności clrcomposition.dll.

Ulepszenia losowe

  • Lepsza obsługa debugowania jądra systemu Linux (szczególnie w przypadku jądra w wersji 6.11 lub nowszej)
  • Obsługa stron KDUMP skompresowanych za pomocą ZSTD

Poprawki

  • Zaktualizuj usługę SOS do wersji 9.0.557512.
  • Naprawiono regresję wydajności podczas sprawdzania odwołanych podpisów podczas ładowania msdia140.dll.
  • Naprawiono awarię podczas odczytywania kontekstu XSTATE.
  • Naprawiono wyróżnianie wyłączonego punktu przerwania w oknie dezasemblacji, aby odróżnić go od włączonego punktu przerwania.
  • Naprawiono awarię podczas zamykania pływającego okna narzędziowego
  • Rozwiązano problem polegający na tym, że czasami bieżące położenie okna Osi czasu nie było uzupełniane po otwarciu niedawnego śladu.
  • Rozwiązano problem, w którym okna dezasemblacji i pamięci czasami nie były aktualizowane po wprowadzeniu nowej wartości.
  • Naprawiono kolorystykę paska tytułu w ciemnym motywie.
  • Naprawiono prezentację odroczonych punktów przerwania w oknie Punkty przerwania, w którym lokalizacja wyświetlałaby 0x0 zamiast oryginalnego wyrażenia wprowadzonego podczas jego tworzenia. Ponadto ma odrębną ikonę wskazującą, że nie jest powiązana.
  • Rozwiązano problem z ustawieniami lokalnymi/zegarkami, który polegał na tym, że kliknięcie prawym przyciskiem myszy widocznego elementu powodowało przewinięcie widoku w górę.
  • Rozwiązano problemy z natvis, proszę zapoznać się z pierwotnym raportem błędu.
  • Naprawiono spam debugera kd z komunikatem Error getting port connector information, zobacz oryginalny raport o błędzie.
  • Rozwiązano problem z gc, który wywoływał warunkowe punkty przerwania, jeśli warunek był fałszywy.
  • Rejestry YMM i ZMM można teraz wyświetlać podczas debugowania śledzenia TTD.

Poprawki ułatwień dostępu

  • Ulepszona nawigacja za pomocą klawiatury dla okien Ustawień lokalnych, Zegarka i Punktów przerwania.
  • Ulepszona czytelność wizualna okien wstążki, ustawień lokalnych, obserwowanych i punktów przerwania.
  • Ulepszona użyteczność czytnika zawartości ekranu dla okien Ustawień lokalnych, Obserwowanych i Punktów przerwania
  • Edytowanie elementów w sekcjach Locals, Watch i Breakpoints zachowa wcześniejszy fokus klawiatury, zaznaczenie i przewijanie, gdy jest to możliwe.
  • Ulepszona ogólna obsługa skalowania tekstu w systemie Windows

Ogólne ulepszenia interfejsu użytkownika

  • Dodano polecenie do przenoszenia fokusu między polem wprowadzania poleceń a okienkiem wyjściowym w trybie przełączania znacznika (jak w wierszu poleceń). Skrót jest Ctrl + M
  • Dodano element menu kontekstowego Przejdź do dezasemblacji do okna punktów przerwania
  • Dodano menu kontekstowe do okna dezasemblacji dla polecenia Uruchom do instrukcji, Ustaw wskaźnik instrukcji, Przejdź do źródła, Przełącz punkt przerwania, Przełącz stan punktu przerwania

Debugowanie podróży w czasie (TTD)

  • Zaktualizowano do wersji 1.11.481.
  • Zobacz notatki o wydaniu TTD

1.2410.11001.0

Zmiana powodująca niezgodność

  • dbghelp.dll dynamicznie łączy się z msdia140.dll. Powinno to mieć wpływ tylko na narzędzia, które redystrybuują dbghelp.dll bez uwzględniania również msdia140.dll. Należy pamiętać, że msdia140.dll jest uwzględniona w pakietach NuGet zawierających dbghelp.dll.

Poprawki

  • Rozwiązano problem polegający na tym, że aliasy funkcji galerii rozszerzeń nie były powiązane z wyzwalaczami ładowania
  • Nie usuwaj magazynu symboli po odebraniu błędu ERROR_INTERNET_SECURITY_CHANNEL
  • Rozwiązano problem polegający na tym, że nie można było wpisać ukośnika odwrotnego w oknie poleceń dla układów klawiatury innych niż angielski.
  • Rozwiązano problem polegający na tym, że pole tekstowe edycji w punktach przerwania, ustawieniach lokalnych i oknach kontrolnych nie przewijało kursora, gdy tekst jest dłuższy niż kolumna, w której jest hostowana.
  • W przypadku zrzutów CAB lub ZIP należy dawać priorytet plikom *.dmp (pojedyncza kropka) nad *.*.dmp (podwójne kropki)

Poprawki ułatwień dostępu

  • Zmiana rozmiaru kolumny za pomocą klawiatury została naprawiona w przypadku okien zegarek/ustawień lokalnych.
  • Ulepszona nawigacja za pomocą klawiatury w całym systemie WinDbgX.

1.2409.17001.0

Poprawki ułatwień dostępu

Rozwiązaliśmy kilka problemów podczas interakcji z usługą WinDbg przy użyciu czytnika zawartości ekranu.

Poprawki

  • Rozwiązano problem polegający na tym, że odinstalowywanie systemu WinDbgX uniemożliwia uruchomienie klasycznej bazy danych WinDbg.
  • Rozwiązano problem polegający na tym, że rozmiar WinDbgX zmieniał się po pojawieniu się podczas uruchamiania.

Debugowanie podróży w czasie (TTD)

1.2407.24003.0

Nowe funkcje

Nowy dostawca skryptów JavaScript

Wprowadzamy teraz nowego dostawcę JavaScript wstecznie kompatybilnego, opartego na V8. W związku z tym hosty arm64 mogą teraz używać rozszerzeń języka JavaScript. Interfejs użytkownika arm64 jest teraz domyślnie ustawiony na korzystanie z aparatu arm64.

Nowy dostawca jest domyślnie włączony we wszystkich architekturach. W systemach x86 i x64 można włączać/wyłączać za pośrednictwem .veighton i .veightoff poleceń. W pewnym momencie te polecenia i starszy dostawca języka JavaScript zostaną usunięte.

Rozszerzenia debugera z manifestami galerii rozszerzeń mogą teraz dodawać ikony do nowej karty Rozszerzenia wstążki WinDbg. Kliknięcie tych ikon spowoduje uruchomienie wizualizacji danego zapytania modelu danych. Rozszerzalność jest osiągana poprzez dodanie widoków do manifestu galerii rozszerzeń. Widok wiąże sprzężenie nazwy i ikony z zapytaniem modelu danych i rodzajem widoku. Dokumentację można znaleźć w dokumentacji manifestu Galerii Rozszerzeń

Rozszerzenie galerii można teraz warunkowo załadować na podstawie określonych wartości parametrów wyjątku. Aby uzyskać szczegółowe informacje, zobacz dokumentację manifestu galerii rozszerzeń .

Opcja konfiguracji, aby nigdy nie pobierać określonych symboli

Teraz można pominąć pobieranie symboli dla określonych obrazów.

W sekcji Symbols pliku konfiguracji DbgX.xml można dodać listę symboli:

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

W debugerze można uruchomić dx Debugger.Settings.Symbols.DisabledSymbolsDownload, aby wyświetlić bieżącą listę symboli, które nie są pobierane.

Możesz również zmienić listę bezpośrednio z debugera w następujący sposób:

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

Aby ułatwić debugowanie problemów z pobieraniem źródeł na podstawie osadzonego SourceLink , można teraz użyć polecenia !lmsourcesinfo module, aby wyświetlić zawartość SourceLink, którego użyje debuger.

Ogólne ulepszenia interfejsu użytkownika

Wprowadziliśmy kilka drobnych ulepszeń w oknach, takich jak okno modułów lub okno stosu:

  • Teraz możesz sortować widok siatki, klikając nagłówek kolumny.
  • Dostępnych jest więcej akcji kliknięcia prawym przyciskiem myszy.
  • W oknie stosu ramki są wyświetlane jako zintegrowane, gdy jest to stosowne.

Poprawki

  • Rozwiązano problem polegający na tym, że pliki PDB większe niż 4 GB nie zostały pobrane za pośrednictwem protokołu HTTP.
    • Edge jest przykładem takiego pliku PDB.
  • Rozwiązano problem z buforowaniem u dostawcy poświadczeń debugera (teraz buforuje poświadczenia na lokację).
  • Usunięto błędy podczas oceny wyzwalaczy ładowania galerii rozszerzeń.
  • Usunięto usterkę z !address, która mogła spowodować awarię.
  • !heap -a -a powinno teraz działać.

TTD

Zobacz notatki dotyczące wersji TTD dla wersji 1.11.410.

1.2402.24001.0

Nowe funkcje

Debugowanie na żywo systemu Linux

Teraz możesz debugować na żywo proces systemu Linux. Aby uzyskać więcej informacji, zobacz następujące tematy:

debugowanie procesów zdalnych systemu Linux

symbole i źródła systemu Linux

Klient WinDbg w najbliższej przyszłości będzie nadal wymagał systemu Windows, ponieważ WinDbg nie działa w systemie Linux.

Rejestrowanie podzbioru działania za pomocą debugowania w obrębie czasu.

Teraz możesz określić listę modułów, które mają być rejestrowane, aby skoncentrować TTD na modułach, o których dbasz. Może to znacznie zmniejszyć nakład pracy związany z rejestrowaniem. Aby użyć tego polecenia, zaznacz pole wyboru "Zarejestruj podzbiór wykonywania" w oknie dialogowym "Konfigurowanie i rejestrowanie", a następnie określ moduły, które mają zostać zarejestrowane. (zobacz znane problemy poniżej).

W celu uzyskania bardziej precyzyjnej kontroli można dokładnie zarejestrować program przy użyciu nowego interfejsu API rejestrowania w procesie. Zobacz, w jaki sposób nasz przykładowy kod i oraz dokumentacja .

Kompaktowe okno rejestrowe

Nowe okno rejestru wygląda tak jak dane wyjściowe polecenia r. Pamiętaj, że edytowanie z nowego okna rejestracji nie jest jeszcze obsługiwane.

Nowe parametry dla e (Wprowadź wartości) w poleceniach pamięci

Polecenia e (Wprowadź wartości) w pamięci obsługują teraz adresy fizyczne, podobnie jak polecenia d (pamięć wyświetlana). Pamiętaj, że te opcje są obsługiwane tylko w trybie jądra:

Opcja Opis
/p Używa fizycznych adresów pamięci do wyświetlania. Zakres określony przez zakres zostanie pobrany z pamięci fizycznej, a nie z pamięci wirtualnej.
/p[c] Tak samo jak /p, z tą różnicą, że pamięć buforowana będzie odczytywana. Nawiasy wokół c muszą być zastosowane.
/p[uc] Tak samo jak /p, z tą różnicą, że niebuforowana pamięć będzie odczytywana. Nawiasy wokół 'uc' muszą zostać uwzględnione.
/p[wc] Tak samo jak /p, z tą różnicą, że pamięć połączona z zapisem będzie odczytywana. Nawiasy wokół wc muszą być dołączone.

Aby uzyskać więcej informacji, zobacz e, ea, eb, ed, eD, ef, ep, eq, eu, ew, eza (Enter Values).

Poprawki

  • Obsługa demanglingu nazw w Rust w debugowaniu systemu Linux
  • Ulepszenia debugowania środowiska CLR
    • Dodaj możliwość wymuszania przechodzenia po stosie ramek CLR w trybie mieszanym
      • Ustawienie ForceMixedModeStackWalker dodane do config.xml lub DbgX.xml.
      • Dodano polecenie !forceclrmixedmodeunwind dla jednorazowych badań lub jeśli nie można zmienić ustawienia konfiguracji.
  • Ogólne ulepszenia debugowania środowiska CLR w systemie Linux
  • Naprawa wielu problemów dotyczących zmiennych LinuxKernel.js i zmiennych per-cpu
    • Dodano polecenie !runq do LinuxKernel.js, aby móc zrzucić kolejki uruchamiania harmonogramu jądra dla każdego procesora (podobnie jak polecenie runq programu do analizy awarii systemu Linux)
    • Naprawiono różne polecenia w LinuxKernel.js, aby odpowiadały zmianom w jądrze: w nowszych jądrach drzewo czasomierza używa węzłów RB pamięci podręcznej zamiast surowych węzłów RB; w nowszych jądrach lista all_bdevs została usunięta, więc urządzenia blokowe są teraz przeszukiwane od superbloku, a nie (blockdev_superblock).
  • Różne poprawki natvis działają bardziej jak najnowsze wersje programu Visual Studio
  • Preferuj link źródłowy a starsze informacje źródłowe
    • Dodano polecenie !lmsourcesinfo <module> do wyświetlania strumieni linków źródłowych z pliku pdb (w celu pomocy w debugowaniu problemów z linkiem źródłowym).

Znane problemy

Podczas określania listy modułów do rejestrowania przy użyciu funkcji TTD określenie więcej niż jednego modułu nie działa w tej wersji.

1.2308.2002.0

Wiele poprawek usterek i drobnych ulepszeń.

1.2306.12001.0

Wiele poprawek usterek i drobnych ulepszeń.

1.2303.30001.0

Notatka

Nazwa debugera została zmieniona z WinDbg Preview na WinDbg.

Starszy debuger wydany z narzędziami debugowania dla systemu Windows będzie określany jako WinDbg (wersja klasyczna).

Debugowanie podróży w czasie na platformie ARM64

Nie tylko WinDbg działa natywnie na ARM64, ale także włączyliśmy Time Travel Debugging (TTD) dla natywnych procesów ARM64. Teraz można rejestrować natywne procesy ARM64 (i procesy x86 i ARM32) i debugować je łatwo, nawet na maszynie x64. Obsługa procesów x64 lub ARM64EC na urządzeniach ARM64 nie jest jeszcze dostępna.

Ogólna wydajność TTD została również poprawiona dzięki znacznemu zmniejszeniu nakładu pracy na rejestrowanie w przypadku procesów korzystających z typowych instrukcji SIMD. W sumie 65 nowych instrukcji zostało zoptymalizowanych, począwszy od MMX do SSE 4.2, AVX i AVX2.

Niejednoznaczne rozwiązanie punktu przerwania

Niejednoznaczne punkty przerwania umożliwiają debugerowi ustawianie punktów przerwania w niektórych scenariuszach, w których wyrażenie punktu przerwania jest rozpoznawane w wielu lokalizacjach. Aby uzyskać więcej informacji, zobacz Niejednoznaczne rozpoznawanie punktów przerwania.

1.2107.13001.0

Wyszukiwanie w wersji zapoznawczej WinDbg zawiera teraz opcję wyszukiwania przy użyciu wyrażeń regularnych — Regex. Włącz funkcję Regex w oknie, które chcesz wyszukać, naciskając Ctrl+F, a następnie przełącz przycisk oznaczony etykietą .* obok pola wyszukiwania.

Tryb ograniczony

Tryb ograniczony to opcjonalne ustawienie, które może ograniczyć typ sesji debugowania, które WinDbg Preview może rozpocząć, tylko do sesji debugowania zdalnego i plików zrzutu. Aby uzyskać więcej informacji, zobacz WinDbg — tryb ograniczony.

Obsługa zmiennych przesłoniętych

W poprzednich wersjach WinDbg zgłasza błędy "Niejednoznaczny symbol" podczas próby oceny (??) lub wyświetlania (dx) zmiennej, która ma taką samą nazwę jak inna zmienna w zakresie. Windbg będzie teraz uściślać zmienne, które mają taką samą nazwę, dołączając @n do nazwy zmiennej. Na przykład: foo@0, foo@1

Ta zmiana zostanie również odzwierciedlona w oknie Lokalne. Wcześniej wyświetlana byłaby tylko najbliższa zmienna w zakresie.

1.2104.13002.0

Wygodną funkcją produktywności systemu WinDbg Preview jest możliwość wykrywania wzorców w oknie poleceń. W tym celu zaznacz dowolny tekst i wszystkie inne wystąpienia tego tekstu. Ponieważ to wyróżnianie jest przydatne podczas przeglądania wzorców pamięci, będzie teraz również wyróżniać równoważne liczby w innych systemach liczbowych, niezależnie od sposobu formatowania liczby w systemie szesnastkowym, dziesiętnym lub notacji naukowej. Aby uzyskać więcej informacji na temat schematów numerowania, zobacz n (Ustaw bazę liczb).

Przykład:

Podczas wybierania 0x000001e2fb3f6160wszystkie inne wystąpienia są wyróżnione niezależnie od formatu.

Zrzut ekranu przedstawiający okno polecenia WinDbg z wyróżnionymi wieloma formatami liczb.

Ta funkcja działa również z półtymczasowymi wyróżnieniami. Ctrl + Dwukrotne kliknięcie liczby, aby wyróżnić wszystkie jego wystąpienia. Możesz śledzić wiele ważnych liczb w historii poleceń w ten sposób (aby wyczyścić wyróżnienie, ponownie naciśnij Ctrl i dwukrotnie kliknij numer). Na koniec ta funkcja działa również podczas wyszukiwania liczb za pomocą Ctrl + F.

Dostęp rozszerzony kodu źródłowego

Polecenie ścieżki źródłowej .srcpath, lsrcpath (Ustaw ścieżkę źródłową) zostało zaktualizowane w celu uwzględnienia nowego tagu — DebugInfoD. Więcej informacji znajdziesz w rozszerzonym dostępie do kodu źródłowego.

Hostowanie i stany gości procesów WOW w modelu danych

Podczas debugowania 32-bitowego procesu WOW z kontekstu 64-bitowego użytkownicy mogą teraz uzyskiwać dostęp do stanów hosta i gościa w modelu danych.

Przykłady 32-bitowego stanu gościa:

dx @$curprocess.Environment

dx @$curthread.Environment

dx @$curthread.Stack

Przykłady stanu hosta 64-bitowego:

dx @$curprocess.NativeEnvironment

dx @$curthread.NativeEnvironment

dx @$curthread.NativeStack

Ulepszenia debugowania języka JavaScript

Kod JavaScript załadowany w interfejsie użytkownika można teraz debugować bezpośrednio w konsoli za pomocą polecenia .scriptdebug. Aby uzyskać więcej informacji, zobacz JavaScript Debugger Scripting — JavaScript Debugowanie.

Ulepszenia ułatwień dostępu

W wersji zapoznawczej WinDbg zobowiązujemy się do tworzenia debugera, który jest inkluzywny dla inżynierów niepełnosprawnych, stale poprawiamy dostępność. Wprowadzono następujące ulepszenia.

  • Linki okna poleceń można teraz kliknąć za pomocą klawiatury (Shift+Enter)
  • Ulepszona nawigacja za pomocą klawiatury w menu głównym
  • Ulepszona nawigacja wstążki za pomocą klawiatury
  • Zwiększony kontrast elementów interfejsu użytkownika

Nowy typ dostępu do danych „Zastąp” dla debuggeru Podróży w Czasie

Debuger podróży w czasie (TTD) udostępnia teraz typ dostępu do danych "Zastąp". Zapytania dotyczące pamięci, takie jak dx @$cursession.TTD.Memory() teraz mają dodatkową kolumnę przedstawiającą stare wartości operacji zapisu.

Inne poprawki, ulepszenia i aktualizacje

  • Dodano funkcję umożliwiającą automatyczne wykrywanie i stosowanie obejścia problemu sprzętowego USB 3.1, gdy zarówno host debugowania jądra, jak i obiekt docelowy to kontrolery USB 3.1.
  • Dodano nowy skrót interfejsu użytkownika: Ctrl + Shift + Kliknięcie linku DML spowoduje skopiowanie go do schowka

1.0.2007.01003

Zakładki na osi czasu

Dodawaj ważne punkty Podróży w Czasie w WinDbg zamiast ręcznie kopiować i wklejać pozycje do Notatnika. Zakładki ułatwiają przeglądanie różnych pozycji w śladzie względem innych zdarzeń i dodawanie do nich adnotacji.

Możesz podać opisową nazwę zakładek.

Zrzut ekranu przedstawiający okno dialogowe nowej zakładki z przykładową nazwą pierwszego wywołania API w aplikacji do wyświetlania powitania.

Uzyskiwanie dostępu do zakładek za pośrednictwem okna Oś czasu dostępnego w widoku > osi czasu. Po umieszczeniu wskaźnika myszy na zakładce zostanie wyświetlona nazwa zakładki.

Zrzut ekranu przedstawiający oś czasu WinDbg z trzema zakładkami i etykietką narzędzia wyświetlającą nazwę.

Możesz wybrać i wstrzymać (lub kliknąć prawym przyciskiem myszy) zakładkę, aby przejść do tej pozycji, zmienić nazwę lub usunąć zakładkę.

Zrzut ekranu przedstawiający menu podręczne wywoływane prawym przyciskiem myszy na zakładce z opcjami przejścia do pozycji, edytowania i usuwania.

Okno modułów

Nowe okna zawierają moduły i powiązane z nimi informacje, są dostępne za pośrednictwem wstążki Widok. Zostaną wyświetlone następujące informacje:

  • Nazwa modułu, w tym lokalizacja ścieżki
  • Rozmiar w bajtach załadowanego modułu
  • Adres podstawowy, na który załadowano moduł
  • Wersja pliku

Zrzut ekranu przedstawiający okno widoku modułów WinDbg z wyświetlonymi pięcioma modułami.

Nazwy i opisy wątków dostępne w debugowaniu w czasie rzeczywistym

Nazwy wątków ustawione na podstawie polecenia SetThreadDescription są teraz dostępne podczas debugowania w trybie użytkownika na żywo. Nazwy wątków są dostępne przy użyciu polecenia "~" lub modelu danych debugera.

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

Obsługa przenośnych plików PDB

Dodano obsługę przenośnego pliku PDB. Format przenośnego pliku PDB (bazy danych programu) opisuje kodowanie informacji debugowania generowanych przez kompilatory języków infrastruktury języka wspólnego (CLI) i używane przez debugery i inne narzędzia. Aby uzyskać więcej informacji, zobacz Przenośne symbole PDB.

Inne zmiany i poprawki błędów

  • WinDbg obsługuje teraz debugowanie zrzutów jądra AMD64 i Linux.
  • Ulepszenia rejestrowania podróży czasowych i inne poprawki.

1.0.1912.11001

Oś czasu TTD — dodaliśmy nowe okno, które wyświetla wizualną reprezentację ważnych zdarzeń w śledzeniu: wyjątki, punkty przerwania, wywołania funkcji i dostępy do pamięci. Linie czasu będą otwierane automatycznie i będą wyświetlać wyjątki (jeśli istnieją) oraz punkty przerwania. Aby uzyskać więcej informacji, zobacz WinDbg Preview: linia czasu.

Przełączono na domyślną ramkę okna - niestandardowa ramka okna, której używaliśmy, chociaż ładniejsza, powodowała pewne problemy ze skalowaniem i zmianą rozmiaru dla istotnej liczby osób, więc zdecydowaliśmy się tymczasowo usunąć go.

Menu Plików – ulepszona nawigacja za pomocą klawiatury - Menu plików jest teraz znacznie łatwiejsze do nawigowania wyłącznie przy użyciu klawiatury.

Inne zmiany i poprawki błędów

  • Okno stosu i ustawień lokalnych zostanie teraz wyłączone, gdy element docelowy jest uruchomiony, i nie będzie wyświetlać komunikatu "Nieokreślony błąd", gdy nie ma docelowego obiektu.
  • Dodano kolumnę "Usługi" do okna dialogowego dołączania, aby łatwo znaleźć, które usługi są uruchomione.
  • Usunięto usterkę, która spowodowała, że wykrywanie architektury nie działało podczas uruchamiania aplikacji z argumentami.
  • Okno dezasemblacji zostało ulepszone, gdy ładowane są prywatne symbole.
  • jsprovider.dll jest teraz ładowany automatycznie, dlatego usunęliśmy przycisk "Load JSProvider" (Załaduj dostawcę JSProvider) ze wstążki skryptów.

1.0.1908.30002

Ulepszenia obiektów wywołań TTD - Wywołania zapytań teraz obejmują nazwy parametrów, typy i wartości. Podczas wykonywania zapytań dotyczących śladów wywołań funkcji można uzyskać w pełni typowane parametry i ich wartości, co ułatwia filtrowanie wyników według tych parametrów.

Obsługa Open Enclave — WinDbg Preview może teraz debugować aplikacje Open Enclave (OE). Aby uzyskać więcej informacji, zobacz Debugowanie Open Enclave).

pl-PL: ELF Core Zrzuty — w ramach obsługi Open Enclave, WinDbg otwiera zrzuty pamięci i pliki binarne ELF, a także symbole DWARF (DWARF 5 nie jest obecnie obsługiwany) zarówno z enklawami, jak i aplikacjami Linux. Podczas otwierania zrzutu rdzenia z aplikacji innej niż Windows podstawowe okna i polecenia powinny działać prawidłowo, ale większość rozszerzeń i poleceń specyficznych dla systemu Windows nie będzie działać. Pliki ELF i DWARF zostaną pobrane z serwerów symboli zgodnie z konwencjami kluczy określonymi tutaj. Enklawy są jedynym obsługiwanym scenariuszem, ale jesteśmy otwarci na opinie dotyczące otwierania innych zrzutów pamięci jądra systemu Linux.

Zmiana formatu pliku TTD — wprowadziliśmy znaczącą aktualizację formatu pliku dla śladów TTD, która przerywa zgodność wsteczną. Poprzednie wersje systemu WinDbg Preview nie będą mogły otwierać śladów zarejestrowanych w tych (i przyszłych) wersjach systemu WinDbg Preview, ale te (i przyszłe) wersje będą mogły otwierać zarówno nowe, jak i stare ślady.

Inne zmiany

  • TTD będzie teraz używać silnika 64-bitowego do indeksowania oraz odpowiedniej bitowości silnika debuggera do odtwarzania, aby zminimalizować potencjalne problemy z pamięcią przy indeksowaniu i problemy z SOS podczas odtwarzania.
  • Uruchomienie polecenia "dx" bez żadnych parametrów spowoduje teraz wyświetlenie głównej przestrzeni nazw w celu ułatwienia przeglądania.
  • Teraz możesz zmodyfikować domyślny symbol i lokalizację źródłowej pamięci podręcznej za pomocą menu ustawień.
  • Ulepszona obsługa rejestrowania AVX-512 (nagrywanie AVX-512 spowoduje większe niż normalne spowolnienie).
  • Włączyliśmy licencjonowania w trybie offline.

1.0.1905.12001

Ulepszenia w ograniczaniu błędów SymSetDiaSession - Nasza poprawka z zeszłego miesiąca mająca na celu zmniejszenie błędu spowodowanego przez aplikacje wstrzykujące DbgHelp do naszego procesu nadal nie działa w niektórych scenariuszach. Wprowadziliśmy ulepszenia i będziemy nadal monitorować opinie na temat tego błędu.

dostosowywanie koloru akcentu — wiele scenariuszy wymaga otwarcia kilku wystąpień WinDbg, a przełączanie się między nimi może być mylące i zajmuje trochę czasu, aby dowiedzieć się, które z nich jest tym "właściwym". Dodaliśmy możliwość zmiany niebieskiego koloru akcentu, aby ułatwić wizualne odróżnienie sesji i ułatwienie zamiany między nimi.

Wystarczy wybrać wstążkę Widok i wybrać opcję Kolor akcentu w sekcji ostatniej. Gdy przyszłe sesje są uruchamiane z niedawnych celów, kolor akcentu zostanie zachowany jako część obszaru roboczego celu.

Ulepszenia tokenizacji źródła — okno źródłowe ma teraz podstawową obsługę tokenizacji plików źródłowych Rust i C++ SEH __try/__except/__finally/__leave.

Ulepszenia współprogramów — ulepszona obsługa zmiennych lokalnych współprogramów oraz pewnych zoptymalizowanych zmiennych.

Domyślne ustawienie symboli i źródłowej pamięci podręcznej — dodano opcję do menu ustawień w obszarze Ustawienia debugowania, aby zmienić lokalizację pamięci podręcznej symboli. Uwaga — istnieje znany problem, według którego pozostawienie tego pola pustego spowoduje niepowodzenie ładowania źródła. Dodamy walidację, aby zapobiec temu w przyszłej wersji.

-pv poprawki - naprawiono usterkę, która mogła uniemożliwić -pv (nieinwazyjne dołączanie) w pewnych okolicznościach.

1.0.1904.18001

pl-PL: Poprawka błędu SymSetDiaSession - Od pewnego czasu otrzymujemy zgłoszenia o błędzie uniemożliwiającym uruchomienie programu WinDbg Preview w niektórych sytuacjach. Istnieje kilka zewnętrznych aplikacji, które próbują wstrzyknąć wersję DbgHelp do naszego procesu przed jego załadowaniem. Niektóre z nich używają wersji dbgHelp z brakującą funkcjonalnością, co powoduje ten błąd podczas próby użycia tych funkcji. Dodaliśmy poprawkę dotyczącą tego problemu i będziemy śledzić, jeśli nadal istnieją scenariusze, w których występuje.

Kontrola czcionki — dodaliśmy ustawienia do zarządzania czcionką i jej rozmiarem. Istnieją dwa różne ustawienia, jedno dla okien tekstowych (okna o stałej szerokości znaków, takie jak dezasemblacja, źródło, polecenia itp.) i jedno dla okien narzędzi (lokalne, stos itp.). Nadal istnieje kilka obszarów, na które nie ma wpływu te opcje, które będziemy aktualizować w przyszłości.

Ulepszenia wyróżniania — Trwałe wyróżnianie tekstu w oknie poleceń będzie teraz również podświetlać tekst w oknach źródła i notatek.

Ulepszenia w ładowaniu źródła — zmieniliśmy sposób ładowania plików źródłowych. Wcześniej podczas otwierania pliku źródłowego operacje aparatu, takie jak uruchamianie dodatkowych poleceń, nie były możliwe lub były nieprzewidywalne. Zmieniliśmy sposób ładowania, aby umożliwić lepszą równoległość i bardziej niezawodne anulowanie operacji otwierania źródeł.

Inne zmiany i poprawki błędów:

  • Dodano polecenie "Przejdź do dezasemblacji" w menu kontekstowym okna źródłowego.
  • Dodano pole wyboru "Postępuj zgodnie z bieżącą instrukcją" w oknie dezasemblacji.
  • Usunięto usterkę, która spowodowała powolne działanie okna poleceń podczas wyprowadzania dużej ilości tekstu.
  • Zmieniono działanie klawiszy Page Up i Page Down, aby działały podobnie jak w programie Visual Studio.
  • Po otwarciu pliku ASM w oknie źródłowym, teraz będzie ono posiadało podstawowe wyróżnianie komentarzy, ciągów i dyrektyw.

1.0.1812.12001

Ta wersja zawiera te aktualizacje.

nagłówek C++ dla modelu danych debugera — dostępny jest nowy nagłówek C++ o nazwie DbgModel.h, dołączony jako część zestawu Windows SDK do rozszerzania modelu danych debugera przez C++. Więcej informacji można znaleźć w Debugger Data Model C++ Overview. Ta wersja zawiera nowe rozszerzenie, które dodaje więcej funkcji "stylu interfejsu API" do modelu danych debugera, do którego można uzyskać dostęp za pomocą polecenia "dx", języka JavaScript i nowego nagłówka DbgModel.h. To rozszerzenie rozbudowuje model danych, aby uwzględnić wiedzę na temat wykonywania zestawów i kodu poprzez przestrzeń nazw Debugger.Utility.Code oraz lokalnego systemu plików poprzez przestrzeń nazw Debugger.Utility.FileSystem.

Rozszerzenie typów syntetycznych Dzięki temu nowemu rozszerzeniu API mamy nowy przykład w naszym repozytorium GitHub — https://github.com/Microsoft/WinDbg-Samples/tree/master/SyntheticTypes. To rozszerzenie JavaScript odczytuje podstawowe pliki nagłówkowe języka C i definiuje syntetyczne informacje o typach dla struktur i unii zdefiniowanych w nagłówku. Za pomocą polecenia dx można następnie przeglądać pamięć w sposób uporządkowany, jakby był dostępny plik PDB zawierający informacje o typach dla tych danych.

Inne zmiany i poprawki błędów:

  • Wersja zapoznawcza WinDbg będzie teraz bardziej inteligentnie obsługiwać przenoszenie okien źródłowych lub okna dezasemblacji na pierwszy plan podczas krokowania w kodzie.
  • Przeorganizowano tytuł okna WinDbg Preview, aby ważniejsze informacje były na początku podczas debugowania jądra.
  • Naprzemienny kontrast tła w oknie poleceń powinien być nieco bardziej zauważalny.

1.0.1810.2001

Ta wersja zawiera te aktualizacje.

  • Nowe okno dialogowe Ustawienia dostępne z menu Plik lub karty Narzędzia główne.
  • Okno dialogowe ustawień zdarzeń i wyjątków. To menu zmienia sposób, w jaki debuger obsługuje zdarzenia i wyjątki, będąc odpowiednikiem poleceń "sx" lub okna dialogowego filtrów zdarzeń WinDbg. Wybierz pozycję Ustawienia na wstążce Narzędzia główne, a następnie naciśnij pozycję "Zdarzenia i wyjątki" po lewej stronie, aby nimi zarządzać.
  • Ulepszony indeksator TTD o lepszej wydajności. Zwiększa to wydajność indeksowania plików śledzenia TTD, dzięki czemu proces indeksowania jest znacznie szybszy (między 2x-10x) i znacznie mniejszy (ok. 50% mniejszy). Ulepszenia wydajności są najbardziej zauważalne w przypadku śladów o rozmiarze ponad 4 GB lub w przypadku korzystania z maszyny z wieloma rdzeniami procesora (8+). Nowy indeksator sprawia, że debugowanie bardzo dużych śladów (50 GB+) jest bardziej wykonalne.
  • Nowa flaga startowa debugArch do określania architektury. WinDbg Preview próbuje uruchomić silnik debugera z poprawną zgodnością bitową dla procesu docelowego, aby lepiej wspierać debugowanie kodu zarządzanego. Istnieją przypadki, w których nie można określić właściwej bitowości lub możesz chcieć przesłonić to, co zostało ustalone. Użyj -debugArch x86|amd64, aby kontrolować architekturę silnika debugera.

Inne zmiany i poprawki błędów:

  • Usunięto usterkę powodującą wyświetlanie czarnych pasków w debugerze pełnoekranowym z otwartym przestawnym oknem.
  • Usunięto usterkę powodującą przypadkowe wyczyszczenie opcji symboli.
  • Historia poleceń jest teraz zachowywana podczas uruchamiania z najnowszych celów.
  • W oknie modelu danych można teraz edytować wartości.
  • Nieindeksowane ślady TTD będą teraz wyraźniej oznaczone jako nieindeksowane.
  • Zwiększona wydajność okna ustawień lokalnych
  • Dodano przycisk wstążki, aby zapisać dzienniki okna poleceń w pliku.
  • Dodane. SelectMany(<do projekcji>) do zestawu domyślnych metod LINQ.

1.0.1807.11002

Ta wersja zawiera te aktualizacje.

Automatyczne zapisywanie i ładowanie punktów przerwania. Jest to pierwszy krok do zastąpienia obszarów roboczych. Rozpoczynamy tę ścieżkę, umożliwiając zapisywanie i ładowanie punktów przerwania. Uruchomienie wcześniej debugowanego elementu z karty "Ostatnie" w menu plików spowoduje teraz załadowanie punktów przerwania z tej sesji. Plan polega na rozszerzeniu tej funkcji, aby zachować więcej informacji między sesjami. Punkty przerwania sprzętu (ba) i inne różne właściwości punktów przerwania, takie jak konteksty specyficzne dla wątków i procesów, a także warunki, nie są obecnie zapisywane.

Drobne zmiany i poprawki błędów:

  • Dodano opcje wiersza polecenia -x, -xe, -xd, -xn i -xi do kontrolowania obsługi wyjątków i zdarzeń. Te opcje wiersza polecenia zachowują się tak samo jak ich odpowiedniki w poleceniach.
  • Okno notatek obsługuje teraz formatowanie pogrubione, podkreślenie i kursywę.
  • Rozwiązano pewne problemy z powiększaniem i przewijaniem.
  • Wybranie tekstu w oknach poleceń, pamięci, źródeł lub dezasemblacji spowoduje teraz, że inne wystąpienia zaznaczonego tekstu zostaną lekko wyróżnione.
  • Usunięto usterkę polegającą na tym, że przerywanie ładowania symboli powodowało niepowodzenie ładowania symboli w pozostałej części sesji.
  • NatVis będzie się teraz prawidłowo ładować po ponownym uruchomieniu sesji.

1.0.1805.17002

Ta wersja zawiera te aktualizacje.

nowe okno dezasemblacji — okno dezasemblowania obejmuje teraz:

  • Przewijanie w górę lub w dół będzie stale ładować więcej kodu źródłowego, gdy tylko jest to możliwe.
  • Wyróżnianie składni dla liczb, adresów kodu i kodów operacji.
  • Wybranie symbolu kodu przeniesie okno dezasemblacji do tej lokalizacji.
  • Umieszczenie kursora na liczbach spowoduje wyświetlenie etykietki narzędzia, która konwertuje ten numer na inne podstawy.
  • Nagłówki oznaczające początek funkcji.

Szybsze okno źródłowe — okno źródłowe zostało zaktualizowane tak, aby było szybsze i bardziej wydajne.

Drobne zmiany i poprawki błędów:

  • Rozwiązano problemy związane z buforowaniem symboli
  • Rozwiązano niektóre przypadki, w których przełączanie początkowej przerwy nie było możliwe do użycia, gdy element docelowy nie jest uszkodzony
  • Jeśli naciśniesz klawisz Tab w oknie polecenia, gdy nic nie jest dostępne, kursor pozostanie teraz w polu wejściowym
  • Wersja zapoznawcza WinDbg będzie teraz automatycznie wykrywać bity podczas otwierania plików CAB

1.0.1804.18003

Ta wersja zawiera te aktualizacje.

Ulepszenia statusu symboli i anulowania — są sytuacje, w których debuger wyświetla ZAJĘTY podczas ładowania symboli i trudno jest określić, co robi i dlaczego, bez włączonej opcji !sym noisy. Zaktualizowaliśmy usługę WinDbg w wersji zapoznawczej, aby zapewnić lepszą komunikację dotyczącą tego, co robi podczas ładowania symboli, aby ułatwić rozwiązywanie wszelkich problemów. Oprócz łatwego wyświetlania dokładnie tego, co się dzieje, wprowadziliśmy pewne zmiany, które powinny sprawić, że anulowanie symboli będzie bardziej niezawodne, a okno Dzienników będzie zawierać niektóre szczegóły, które są zwykle wyświetlane po włączeniu !sym noisy. Jeśli wybierzesz Widok -> Dzienniki, otrzymasz pełny, szczegółowy wynik ładowania symboli bez konieczności włączania tej opcji i próby ponownego załadowania symboli.

okno notatek eksperymentalnych — podgląd WinDbg ma teraz okno do tworzenia notatek. Wystarczy nacisnąć pozycję Widok —> "Notatki", aby go otworzyć. W przypadku kopiowania/wklejania do niego linki DML będą zachowywane i nadal działają tak, jakby było to okno polecenia. Możesz również zapisywać i ładować pliki notatek ze wstążki "Notatki" po otwarciu okna.

Eksperymentalne szybsze okno źródłowe — Aby poprawić wydajność WinDbg Preview, istnieje eksperymentalne nowe okno źródłowe, które jest znacznie bardziej wydajne. Istnieje jeszcze kilka luk w menu kontekstowym i wyróżnianiu składni, ale chcemy dać wszystkim możliwość wypróbowanie go przed zakończeniem, aby przekazać nam wczesną opinię. Uruchom $UseFastSourceWindow, aby go użyć. Jeśli chcesz wrócić do starego, uruchom $UseMonacoSourceWindow. Ustawienie zachowa się między sesjami. Aby uzyskać nową wersję, należy zamknąć i ponownie otworzyć okna typu open source.

API JSProvider w wersji 1.2 — w przypadku rozszerzeń języka JavaScript, które deklarują obsługę wersji 1.2:

  • Każdy obiekt z metodą .compareTo, która kończy działanie skryptu, będzie miał na nim niestandardowy komparator (operatory porównania będą działać w ewaluatorze DX i gdzie indziej: np. IModelObject::Compare)
  • Każdy obiekt z metodą .equals, która kończy działanie skryptu, będzie miał na nim niestandardowy operator równości (== i != będzie działać w ewaluatorze DX i gdzie indziej: np.: IModelObject::IsEqualTo)
  • Obiekty natywne lub modelu danych, które trafiają do skryptu, będą miały metody .compareTo i .equals, które umożliwiają dostęp do każdej niestandardowej implementacji porównawczej lub równości.

Drobne zmiany i poprawki błędów:

  • Serwer będzie teraz wyświetlać w pełni kwalifikowaną nazwę domeny, by ułatwić jej użycie w przypadku problemów z domeną związanych z krótkimi nazwami.
  • Ctrl+G działa teraz w oknie źródłowym.
  • Dodano pasek adresu do okna deasemblacji.
  • Wersja zapoznawcza WinDbg będzie teraz obsługiwać _NT_SYMBOL_PATH w bardziej oczekiwany sposób.
  • Dodano opcję linii poleceń -server.
  • Zapytania modelu danych TTD można teraz wyświetlać stopniowo, więc jeśli przerywasz je, nadal będą widoczne pewne wyniki. Ta funkcja jest nadal eksperymentalna i opcjonalna. Uruchom dx @$cursession.TTD.AsyncQueryEnabled = 1, aby ją włączyć.
  • Polecenie "dps" zawiera teraz linki do plików źródłowych, do których się odwołuje.

1.1801.19001.0

Ta wersja zawiera te aktualizacje.

Wyróżnianie tekstu — teraz możesz bezpośrednio w debugerze wyróżniać wszystkie wystąpienia zaznaczonego tekstu. Aby użyć tej funkcji, wystarczy zaznaczyć jakiś tekst w oknie polecenia, a następnie wybrać pozycję "Wyróżnij" na wstążce poleceń lub naciśnij CTRL+ALT+H. Użycie jednego z tych elementów w już wyróżnionym tekście spowoduje usunięcie wyróżniania.

Jeśli wolisz używać poleceń, możesz użyć polecenia "$hl":

$hl ["someValueHere"] — wyróżnianie nadaj tekstowi (lub usuń wyróżnienie, jeśli zostało już wyróżnione)

$hl clearAll — wyczyść wszystkie wyróżnione wpisy

$hl caseSensitive [1|0] — ustaw, czy wyróżnianie ma być z rozróżnianiem wielkości liter, czy bez rozróżniania wielkości liter (wartość domyślna to bez rozróżniania wielkości liter)

Ta wersja zawiera również pewne drobne poprawki błędów.

1.1712.15003.0

Ta wersja zawiera te aktualizacje.

zapytań TTD dotyczących dostępu do pamięci — teraz możesz wykonywać zapytania w TTD dotyczące dostępu do pamięci, podobnie jak w przypadku zapytań o wywołania. Dzięki temu można znaleźć wszystkie operacje odczytu, zapisu i wykonywania, które uzyskują dostęp do określonego zakresu pamięci.

Przykład odczytu i zapisu: dx @$cursession.TTD.Memory(startAddress, endAddress, "rw")

Przykład unikatowego wykonania: dx @$cursession.TTD.Memory(startAddress, endAddress, "ec")

Zmiany ustawień — usługa WinDbg Preview automatycznie zapisze ustawienia między sesjami, w tym ścieżkę symbolu i ścieżkę źródłową.

ulepszenia języka JavaScript

  • Liczby 64-bitowe oraz dane numeryczne w języku JavaScript zawierają teraz metodę modulo, która umożliwia wykonywanie prawdziwej operacji modulo 64-bitowej.
  • Obiekty zdefiniowane w języku JavaScript mogą teraz implementować niestandardowe pojęcie porównywalności lub równości, które będzie działać w ramach dx przy użyciu standardowych operatorów języka C++ lub w operacjach LINQ. Aby można było to wykorzystać, skrypt musi zadeklarować w tablicy initializeScript, że obsługuje nową wersję interfejsu API hosta, wstawiając rekord "new host.apiVersionSupport(1, 2)". Po wykonaniu tych czynności można użyć tych funkcji w dowolnym zapytaniu LINQ w oknie modelu danych lub 'dx'. Jeśli metoda implementuje metodę .compareTo(other), jest porównywalna (operatory porównania działają w dx i LINQ). Jeśli metoda zwraca wartość ujemną, taką jak "ta < inna". Jeśli metoda zwraca zero, oznacza to, że "this == other". Jeśli metoda zwraca wartość dodatnią "ta > inna". Jeśli metoda implementuje .equals(other), oznacza to, że jest porównywalna (== działa w dx i LINQ). Metoda musi zwracać wartość true lub false.

Drobne zmiany i poprawki błędów:

  • Usunięto usterkę polegającą na tym, że okna stosu i ustawień lokalnych nie działały podczas debugowania rozruchu
  • Zaktualizowano dane wyjściowe LM, aby dokładniej raportować wartość ProductVersion i podobne pola.
  • Włączono przycisk "cofnij się" podczas sesji TTD
  • Dodano obsługę -lsrcpath
  • Nagłówki w oknach lokalizacji, obserwacji i modelu nie znikają podczas przewijania w dół
  • Po przełączeniu się z powrotem do wersji zapoznawczej WinDbg za pomocą ALT+Tab okno poleceń prawidłowo zachowa lokalizację kursora.
  • Dodano skrót CTRL+ALT+V do przełączania trybu szczegółowego
  • Teraz możesz wyłączyć automatyczne przewijanie okna poleceń, wybierając i trzymając (lub klikając prawym przyciskiem myszy) kartę okna poleceń i wybierając pozycję "Wyłącz automatyczne przewijanie"
  • Teraz można debugować procesy podrzędne za pośrednictwem strony zaawansowanej uruchamiania pliku wykonywalnego.

1.0.14.0

Ta wersja zawiera te aktualizacje.

Ulepszone środowisko serwera procesów — dodano nowe powiadomienie w menu Plik, które pokazuje, z którym serwerem procesów jesteś połączony i z którym współpracujesz. W ramach tych zmian po zakończeniu sesji debugowania połączenie serwera przetwarzania będzie utrwalane i można je rozłączyć w menu Plik.

Nowe opcje predefiniowanych układów na wstążce Widok — na wstążce "Widok" jest dostępna nowa opcja "Układy". Obecnie istnieją trzy układy: domyślny, jeden skoncentrowany na dezasemblacji i jeden minimalny.

Wstążka Debugowania Podróży w Czasie — jest dostępna ulepszona wstążka Debugowania Podróży w Czasie, która będzie wyświetlana podczas debugowania śledzenia podróży w czasie.

metadanych ze skryptów języka JavaScript — rozszerzenia języka JavaScript mogą teraz zwracać metadane dla właściwości i innych konstrukcji. Oznacza to, że rozszerzenie może zapewnić ciągi pomocy, wskazać promienie wyświetlania wartości i nie tylko. Metadane są dostarczane przez umieszczenie deskryptora metadanych na obiekcie za pośrednictwem obecności klasy Symbol.metadataDescriptor lub jawnego wywołania elementu host.metadata.defineMetadata. Funkcja, iterowane wartości i inne konteksty wartości mogą zwracać metadane dla swoich wartości za pomocą host.metadata.valueWithMetadata.

aktualizacje interfejsu API języka JavaScript — niektóre potencjalnie powodujące niezgodność na poziomie źródła zostały wprowadzone w interfejsach API u dostawcy języka JavaScript (w tym nowe przewidywane metody i właściwości obiektów natywnych). Istniejące rozszerzenia nie napotkają żadnych mogących zakłócić zgodność zmian, o ile nie wskażą, że obsługują nową wersję interfejsu API JsProvider. Obsługa nowej wersji interfejsu API jest wskazywana przez umieszczenie rekordu host.apiVersionSupport w tablicy zwróconej przez funkcję initializeScript z informacją o obsłudze wersji 1.1. może? .. z wartością wskazującą obsługę wersji 1.1.

Zmiany w interfejsie API w wersji 1.1 obejmują:

  • host.getModuleSymbol i host.getModuleType zwracają wartość null, jeśli nie mogą znaleźć symbolu zamiast zgłaszać wyjątek.
  • Wszystkie obiekty natywne mają na nich właściwość adresu oprócz właściwości targetLocation. Jeśli obiekt nie ma adresu, podczas uzyskiwania dostępu do właściwości zostanie zgłoszony wyjątek.
  • Wszystkie obiekty natywne mają nowe metody .getObjectValue i .setObjectValue w celu uzyskania dostępu do właściwości obiektu, które mogą powodować konflikt z nazwami Języka JavaScript w obiekcie (np. "address").

dodatkowe zmiany języka JavaScript

  • Rozszerzenia języka JavaScript mogą teraz dodawać i usuwać właściwości obiektów modelu danych za pośrednictwem obiektu Object.defineProperty i operatora delete. Dodawanie lub rejestrowanie klasy JavaScript jako modelu nadrzędnego lub podpisu typu jest nadal zdecydowanie preferowanym sposobem manipulowania modelem obiektów.
  • Rozszerzenia języka JavaScript mogą teraz modyfikować zmienne globalne w modułach w obiekcie docelowym debugowania za pomocą nowego interfejsu API host.setModuleSymbol.
  • Wszystkie funkcje matematyczne, które znajdują się w 64-bitowym typie biblioteki (np. .add, .subtract, mnożenie, dzielenie itp.) są teraz obecne również w liczbach języka JavaScript.
  • Funkcje i właściwości JavaScript mogą teraz zwracać wartości, które są typami wyliczeniowymi poprzez niestandardowy marshaling. Akcesor funkcji lub właściwości może zwrócić host.typeSystem.marshalAs(wartość, typ...) w celu wywołania takiego niestandardowego marshalingu.
  • Polecenie punktu przerwania w debugerze skryptu może teraz przerwać nazwy funkcji oprócz pozycji wierszy/kolumn.
  • Obiekty typu w rozszerzeniach języka JavaScript mają dostęp do ich modułu zawierającego za pośrednictwem właściwości .containingModule.

Drobne zmiany i poprawki błędów:

  • Naprawiono formatowanie zakładek wstążki warunkowej, aby były mniej mylące.
  • Przepracowaliśmy ponownie kod DML, aby był bardziej rygorystyczny w analizowaniu w celu zwiększenia wydajności.
  • Różne poprawki dotyczące wydajności i działania CTRL+F.
  • Dodano ostrzeżenie podczas uruchamiania bez podwyższonego poziomu uprawnień przed próbą użycia TTD.
  • Dodano opcję zastąpienia automatycznego wykrywania bitów docelowych.
  • Wyłączono różne opcje menu plików i wstążki, gdy nie można ich używać (na przykład "Go" w pliku zrzutu).

Znane problemy:

  • SOS nie będzie działać na śladach x86.

1.0.13.0

Ta wersja dodaje śledzenie podróży w czasie. Debugowanie podróży w czasie umożliwia zarejestrowanie procesu, a następnie odtworzenie go później zarówno do przodu, jak i do tyłu. Debugowanie podróży w czasie (TTD) może ułatwić debugowanie problemów, umożliwiając "przewijanie" sesji debugera, zamiast konieczności odtworzenia problemu do momentu znalezienia usterki. Aby uzyskać więcej informacji, zobacz Debugowanie podróży w czasie — omówienie.

1.0.12.0

Ta wersja była pierwszą wersją systemu WinDbg Preview. Aby uzyskać ogólne informacje na temat funkcji dostępnych w wersji Preview WinDbg, Główne funkcje WinDbg.

Zobacz też

WinDbg — Instalacja

WinDbg — opcje uruchamiania z wiersza poleceń