Narzędzia do debugowania dla systemu Windows. Narzędzia do debugowania systemu Windows: diagnozowanie i naprawianie BSOD. Skonfiguruj swój system

22 czerwca 2010

Wcześniej Windbg był dostępny do pobrania osobno. Ale w przypadku najnowszych wersji Microsoft zachowuje je jako część Windows SDK. Poniżej znajdują się linki do pobrania.

Windows 10

Najnowszą wersję Windbg dla Windows 7 można pobrać z linku https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk

System Windows 7

Pobierz instalatory z powyższych linków. Zauważ, że to nie pobiera całego SDK, to tylko instalator. Po uruchomieniu pliku możesz wybrać narzędzia, które chcesz pobrać. Jeśli interesuje Cię tylko Windbg, możesz wykluczyć wszystko inne i wybrać tylko „Narzędzia debugowania” w „Wspólne narzędzia”

Powyższy pakiet instaluje wersję windbg 6.12. Jeśli chcesz szybko zainstalować windbg, możesz przejść do starszej wersji (6.11), którą można pobrać z
link podany na końcu tego posta.

Po zakończeniu instalacji możesz znaleźć program w Menu Start -> Wszystkie programy -> Narzędzia do debugowania systemu Windows -> Windbg

Wprowadzenie do WinDBG — część 1

Aleksander Antipow

WinDBG to świetny debugger. Może nie ma bardzo przyjaznego dla użytkownika interfejsu i domyślnie nie ma czarnego tła, ale jest obecnie jednym z najpotężniejszych i najbardziej stabilnych debuggerów w systemie Windows. W tym artykule przeprowadzę Cię przez podstawy WinDBG, abyś mógł zacząć z nim korzystać.


WinDBG to świetny debugger. Może nie ma bardzo przyjaznego dla użytkownika interfejsu i domyślnie nie ma czarnego tła, ale jest obecnie jednym z najpotężniejszych i najbardziej stabilnych debuggerów w systemie Windows. W tym artykule przeprowadzę Cię przez podstawy WinDBG, abyś mógł zacząć z nim korzystać.

To pierwszy artykuł z serii o WinDBG. Lista wszystkich artykułów zawartych w tej serii:

  • Część 1 - instalacja, interfejs, symbole, zdalne/lokalne debugowanie, system pomocy, moduły, rejestry.
  • Część 2 - punkty przerwania.
  • Część 3 - inspekcja pamięci, debugowanie programu krok po kroku, porady i wskazówki.

W tym artykule przyjrzymy się montowaniu i dołączaniu do procesu, a w kolejnych omówimy punkty przerwania, pojedyncze kroki i kontrolę pamięci.

Instalowanie WinDBG

W porównaniu do Windows 7, proces instalacji WinDBG w Windows 8 nieznacznie się zmienił. W tej sekcji omówimy instalację debugera dla obu systemów operacyjnych.

Instalowanie WinDBG w systemie Windows 8

W systemie Windows 8 WinDBG znajduje się w zestawie Windows Driver Kit (WDK). Możesz zainstalować program Visual Studio i WDK lub osobno zainstalować pakiet Debugging Tools for Windows 8.1, który zawiera WinDBG.

Instalator zapyta, czy chcesz zainstalować WinDBG lokalnie, czy pobrać cały pakiet programistyczny na inny komputer. Ten ostatni jest zasadniczo odpowiednikiem samodzielnego instalatora, co jest bardzo przydatne, jeśli chcesz zainstalować pakiet na innych systemach w przyszłości.

Rysunek 1: Wybór typu instalacji

W następnym oknie musisz odznaczyć wszystkie elementy z wyjątkiem „Narzędzia debugowania dla systemu Windows” i kliknąć przycisk „Pobierz”.

Po zakończeniu pracy instalatora przejdź do katalogu, w którym pakiet został pobrany (domyślnie jest to c:\Users\Username\Downloads\Windows Kits\8.1\StandaloneSDK) i przejdź przez procedurę instalacji.

Instalowanie WinDBG w systemie Windows 7 i wcześniejszych

W systemie Windows 7 i wcześniejszych WinDBG jest częścią pakietu „Narzędzia debugowania dla systemu Windows”, który jest dołączony do zestawu Windows SDK i .Net Framework. Będziesz musiał pobrać instalator, a następnie wybrać „Narzędzia debugowania dla systemu Windows” podczas procesu instalacji.

Podczas instalacji wybieram opcję „Narzędzia debugowania” w „Pakietach redystrybucyjnych”, aby utworzyć samodzielny instalator ułatwiający kolejne instalacje.

Rysunek 2: Wybieranie opcji instalacji w celu utworzenia samodzielnego instalatora

Po zakończeniu instalacji powinieneś mieć instalatory WinDBG dla różnych platform (w katalogu c:\Program Files\Microsoft SDKs\Windows\v7.1\Redist\Debugging Tools for Windows\).

Rysunek 3: Folder z instalatorami WinDBG dla różnych platform

Interfejs WinDBG

Rysunek 4: Wygląd WinDBG

Gdy po raz pierwszy zobaczysz wygląd i działanie WinDGB, zdasz sobie sprawę, że debugger jest przerażająco prosty. Większość funkcji WinDBG poznaje się podczas debugowania procesu. Zamiast tracić czas na opisywanie interfejsu, w kolejnych rozdziałach omówimy tylko najważniejsze punkty.

Najbardziej podstawową rzeczą, którą musisz wiedzieć o interfejsie debugera, jest okno poleceń, które składa się z dwóch obszarów. Pierwszy obszar: okno, w którym wyświetlany jest wynik wykonania poleceń. Drugi obszar: małe pole tekstowe do wprowadzania poleceń.

Rysunek 5: Okno poleceń WinDBG

Symbolika

W większości przypadków WinDBG nie wymaga żadnych specjalnych ustawień i działa poprawnie od razu po wyjęciu z pudełka. Ale jedną ważną rzeczą, którą należy poprawić, są symbole. Symbole to pliki, które są generowane wraz z plikiem wykonywalnym podczas kompilacji programu i zawierają informacje debugowania (funkcje i nazwy zmiennych). Informacje o debugowaniu umożliwiają poznanie funkcjonalności aplikacji podczas debugowania lub dezasemblacji. Wiele składników firmy Microsoft jest kompilowanych z symbolami, które są dystrybuowane za pośrednictwem serwera symboli firmy Microsoft. Z resztą plików wykonywalnych wszystko nie jest takie różowe - bardzo rzadko pliki z informacjami debugowania są dołączane do aplikacji. W większości przypadków firmy ograniczają dostęp do takich informacji.

Aby skonfigurować WinDBG do korzystania z Microsoft Symbol Server, przejdź do sekcji File:Symbol File Path i ustaw ścieżkę na SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols. Oczywiście, to trochę dziwne, że gwiazdki są używane jako ograniczniki. Po skonfigurowaniu Microsoft Symbol Server symbole zostaną pobrane do folderu C:\Symbols.

Rysunek 6: Konfiguracja serwera symboli firmy Microsoft

WinDBG automatycznie ładuje symbole dla plików binarnych w razie potrzeby. Możesz także dodać własny folder symboli, jak na przykład:

SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols;c:\SomeOtherSymbolFolder

Dodawanie symboli podczas debugowania

Jeśli potrzebujesz zaimportować symbole podczas debugowania, możesz to zrobić za pomocą .sympath (okno poleceń pojawi się po podłączeniu do procesu). Na przykład, aby dodać folder c:\SomeOtherSymbolFolder, wprowadź następujące polecenie:

0:025> .sympath+ c:\SomeOtherSymbolFolder
Ścieżka wyszukiwania symboli to: SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols;c:\SomeOtherSymbolFolder
Rozszerzona ścieżka wyszukiwania symboli to: srv*c:\symbols*http://msdl.microsoft.com/download/symbols;c:\someothersymbolfolder

Dobrym pomysłem jest przeładowanie symboli po dodaniu lub zmianie ścieżek:

00:025> .przeładuj
Ponowne ładowanie modułów prądowych
................................................................
...............................................

Sprawdzanie załadowanych symboli

Aby zobaczyć, które moduły mają załadowane symbole, możesz użyć polecenia x*!. Chociaż WinDBG ładuje symbole tylko w razie potrzeby, x*! pokaże symbole, które można załadować. Możesz wymusić ładowanie symboli za pomocą polecenia ld * (może to zająć trochę czasu i możesz zatrzymać ten proces, przechodząc do Debug:Break).

Teraz możemy zobaczyć symbole dla każdego modułu.

Rysunek 8: Lista symboli

Debugowanie procesu lokalnego

Podczas debugowania procesu lokalnego masz dwie możliwości:

  1. Dołącz do już uruchomionego procesu.
  2. Uruchom proces przez WinDBG.

Każda metoda ma swoje zalety i wady. Jeśli, powiedzmy, uruchamiasz program przez WinDBG, masz dostępne specjalne opcje debugowania (na przykład debugowanie sterty), które mogą spowodować awarię aplikacji. Z drugiej strony istnieją również programy, które ulegają awarii po podłączeniu do nich debugera. Niektóre aplikacje (zwłaszcza złośliwe oprogramowanie) sprawdzają obecność debuggera w systemie podczas uruchamiania i odpowiednio w tym przypadku sensowne jest trzymanie się już uruchomionego procesu. Czasami istnieje debugowanie usługi systemu Windows, która ustawia pewne parametry podczas uruchamiania, więc aby uprościć proces debugowania, lepiej jest również podłączyć się do uruchomionego procesu, zamiast uruchamiać usługę za pomocą debugera. Niektórzy twierdzą, że uruchomienie procesu przez debugger ma poważny wpływ na wydajność. Krótko mówiąc, wypróbuj oba i wybierz to, co najbardziej Ci odpowiada. Jeśli z jakiegoś powodu wolisz konkretną metodę, podziel się swoimi przemyśleniami w komentarzach!

Rozpoczęcie procesu

Jeśli debugujesz samodzielną aplikację, która działa lokalnie i nie jest połączona z siecią, możesz chcieć uruchomić ją za pośrednictwem WinDBG. Nie oznacza to jednak, że nie możesz podłączyć się do już uruchomionego procesu. Wybierz najwygodniejszy dla siebie sposób.

Rozpoczęcie procesu nie jest trudne. Przejdź do „Plik: Otwórz plik wykonywalny” i wybierz plik wykonywalny, który chcesz debugować. Możesz także podać argumenty lub ustawić katalog startowy:

Rysunek 9: Wybór pliku wykonywalnego do debugowania

Proces łączenia

Połączenie z już uruchomionym procesem również nie jest trudne. Należy jednak pamiętać, że w niektórych przypadkach znalezienie dokładnego procesu, który chcesz debugować, może zająć trochę czasu. Na przykład niektóre przeglądarki tworzą jeden proces nadrzędny, a następnie kilka innych procesów dla każdej karty. Tak więc, w zależności od zrzutu awaryjnego, który debugujesz, możesz chcieć podłączyć się nie do procesu nadrzędnego, ale do procesu skojarzonego z kartą.

Aby dołączyć do już działającego procesu, przejdź do „Plik: Dołącz do procesu”, a następnie wybierz PID lub nazwę procesu. Pamiętaj, że musisz mieć odpowiednie uprawnienia, aby podłączyć się do procesu.

Rysunek 10: Wybieranie procesu do podpięcia

Jeśli po połączeniu aplikacja zawiesiła swoją pracę, możesz skorzystać z trybu „Nie wyniszcz”, zaznaczając odpowiednie pole.

Debugowanie procesu zdalnego

Czasami może zajść potrzeba debugowania procesu w systemie zdalnym. Dużo wygodniej byłoby obsłużyć to zadanie za pomocą lokalnego debuggera zamiast korzystania z maszyny wirtualnej lub protokołu RDP. A może debugujesz proces LoginUI.exe, który jest dostępny tylko wtedy, gdy system jest zablokowany. W takich sytuacjach możesz użyć lokalnej wersji WinDBG i zdalnie podłączyć się do procesów. Aby rozwiązać te problemy, są dwie najpopularniejsze metody.

Istniejące sesje debugowania

Jeśli już rozpocząłeś debugowanie programu lokalnie (poprzez dołączenie lub uruchomienie procesu za pośrednictwem WinDBG), możesz wprowadzić określone polecenie, a WinDBG uruchomi „nasłuchiwanie” (odbiornik), z którym zdalny debuger może się połączyć. Aby to zrobić, użyj polecenia .server:

Serwer tcp:port=5005

Po uruchomieniu powyższego polecenia możesz zobaczyć takie ostrzeżenie:

Rysunek 11: Komunikat ostrzegawczy, który może pojawić się po uruchomieniu polecenia utworzenia „słuchacza”

Następnie WinDBG zgłosi, że serwer działa:

0:005> .tcp serwera:port=5005
0: -zdalny tcp:Port=5005,Serwer=UŻYTKOWNIK-PC

Możesz teraz połączyć się ze zdalnego hosta z już istniejącą sesją debugowania, przechodząc do „Plik:Połącz z sesją zdalną” i wpisując coś takiego w polu tekstowym: tcp:Port=5005,Server=192.168.127.138

Rysunek 12: Zdalne połączenie z sesją debugowania

Po połączeniu otrzymasz potwierdzenie na zdalnym kliencie:


serwer uruchomiony. Klient może połączyć się z dowolnym z tych wierszy poleceń
0: -zdalny tcp:Port=5005,Serwer=UŻYTKOWNIK-PC
NAZWA MASZYNY\Użytkownik (tcp 192.168.127.138:13334) podłączony w poniedziałek 16 grudnia 09:03:03 2013

oraz komunikat w lokalnej wersji debugera:

NAZWA MASZYNY\Użytkownik (tcp 192.168.127.138:13334) podłączony w poniedziałek 16 grudnia 09:03:03 2013

Utwórz zdalny serwer

Możesz także utworzyć oddzielny serwer WinDBG, połączyć się z nim zdalnie i wybrać proces do debugowania. Można to zrobić za pomocą pliku dbgsrv.exe, w którym planujesz debugować procesy. Aby uruchomić taki serwer, uruchom następujące polecenie:

dbgsrv.exe -t tcp:port=5005

Rysunek 13: Uruchamianie zdalnego serwera

I znowu możesz otrzymać ostrzeżenie dotyczące bezpieczeństwa, które powinieneś zaakceptować:

Rysunek 14: Komunikat bezpieczeństwa, który może pojawić się podczas uruchamiania serwera debugowania

Możesz połączyć się z serwerem debugowania, jeśli przejdziesz do pliku „Plik: Połącz ze zdalnym skrótem” i wpiszesz następujący wiersz w polu tekstowym: TCP:Port=5005,Serwer=192.168.127.138

Rysunek 15: Łączenie się z serwerem debugowania

Po połączeniu nie otrzymasz żadnych sygnałów, że jesteś połączony, ale jeśli przejdziesz do "Plik:Dołącz do procesu", zobaczysz listę procesów serwera debugowania (gdzie jest uruchomiony dbgsrv.exe). Teraz możesz podłączyć się do procesu tak, jakbyś robił to lokalnie.

System pomocy

System pomocy w WinDBG jest świetny. Oprócz uczenia się czegoś nowego powinieneś być w stanie uzyskać pomoc dotyczącą polecenia. Użyj polecenia .hh, aby uzyskać dostęp do pomocy WinDBG:

Możesz również uzyskać pomoc dotyczącą konkretnego polecenia. Na przykład, aby uzyskać pomoc dotyczącą polecenia .reload, użyj następującego polecenia:

windbg> .hh .przeładuj

Lub po prostu przejdź do sekcji „Pomoc:Spis treści”.

Moduły

Podczas działania programu importowane są różne moduły, które zapewniają funkcjonalność aplikacji. Dlatego, jeśli wiesz, które moduły są importowane przez aplikację, możesz lepiej zrozumieć, jak to działa. W wielu przypadkach będziesz debugować konkretny moduł ładowany przez program, a nie sam plik wykonywalny.

Po podłączeniu do procesu WinDBG automatycznie wyświetli załadowane moduły. Na przykład poniżej moduły po podłączeniu do calc.exe:

Debuger Microsoft (R) Windows wersja 6.12.0002.633 X86
Prawa autorskie (c) Microsoft Corporation. Wszelkie prawa zastrzeżone.

*** czekaj z oczekującym załącznikiem
Ścieżka wyszukiwania symboli to: SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
Wykonywalna ścieżka wyszukiwania to:
ModLoad: 00a70000 00b30000 C:\Windows\system32\calc.exe
ModLoad: 77630000 7776c000 C:\Windows\SYSTEM32\ntdll.dll
ModLoad: 77550000 77624000 C:\Windows\system32\kernel32.dll
ModLoad: 75920000 7596a000 C:\Windows\system32\KERNELBASE.dll
ModLoad: 76410000 77059000 C:\Windows\system32\SHELL32.dll
ModLoad: 77240000 772ec000 C:\Windows\system32\msvcrt.dll
ModLoad: 7630000 76357000 C:\Windows\system32\SHLWAPI.dll
ModLoad: 75cd0000 75d1e000 C:\Windows\system32\GDI32.dll
ModLoad: 75fa0000 76069000 C:\Windows\system32\USER32.dll
ModLoad: 777b0000 777ba000 C:\Windows\system32\LPK.dll
ModLoad: 774b0000 7754d000 C:\Windows\system32\USP10.dll
ModLoad: 73110000 732a0000 C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_
6595b64144ccf1df_1.1.7600.16385_none_72fc7cbf861225ca\gdiplus.dll
ModLoad: 75a80000 75bdc000 C:\Windows\system32\ole32.dll
ModLoad: 76360000 76401000 C:\Windows\system32\RPCRT4.dll
ModLoad: 777c0000 77860000 C:\Windows\system32\ADVAPI32.dll
ModLoad: 75be0000 75bf9000 C:\Windows\SYSTEM32\sechost.dll
ModLoad: 76270000 762ff000 C:\Windows\system32\OLEAUT32.dll
ModLoad: 74590000 745d0000 C:\Windows\system32\UxTheme.dll
ModLoad: 74710000 748ae000 C:\Windows\WinSxS\x86_microsoft.windows.common-
ModLoad: 703d0000 70402000 C:\Windows\system32\WINMM.dll
ModLoad: 74c80000 74c89000 C:\Windows\system32\VERSION.dll
ModLoad: 77770000 7778f000 C:\Windows\system32\IMM32.DLL
ModLoad: 75c00000 75ccc000 C:\Windows\system32\MSCTF.dll
ModLoad: 74130000 7422b000 C:\Windows\system32\WindowsCodecs.dll
ModLoad: 74260000 74273000 C:\Windows\system32\dwmapi.dll
ModLoad: 756d0000 756dc000 C:\Windows\system32\CRYPTBASE.dll
ModLoad: 75e60000 75ee3000 C:\Windows\system32\CLBCatQ.DLL
ModLoad: 6ef10000 6ef4c000 C:\Windows\system32\oleacc.dll

Później w procesie debugowania możesz ponownie wyświetlić tę listę za pomocą polecenia lmf:

0:005>lmf
początek koniec nazwa modułu
00a70000 00b30000 calc C:\Windows\system32\calc.exe
6ef10000 6ef4c000 oleacc C:\Windows\system32\oleacc.dll
703d0000 70402000 WINMM C:\Windows\system32\WINMM.dll
73110000 732a0000 gdiplus C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_
1.1.7600.16385_none_72fc7cbf861225ca\gdiplus.dll
74130000 7422b000 WindowsCodecs C:\Windows\system32\WindowsCodecs.dll
74260000 74273000 dwmapi C:\Windows\system32\dwmapi.dll
74590000 745d0000 UxTheme C:\Windows\system32\UxTheme.dll
74710000 748ae000 COMCTL32 C:\Windows\WinSxS\x86_microsoft.windows.common-
control_6595b64144ccf1df_6.0.7600.16385_none_421189da2b7fabfc\COMCTL32.dll
74c80000 74c89000 WERSJA C:\Windows\system32\VERSION.dll
756d0000 756dc000 CRYPTBASE C:\Windows\system32\CRYPTBASE.dll
75920000 7596a000 KERNELBASE C:\Windows\system32\KERNELBASE.dll
75a80000 75bdc000 ole32 C:\Windows\system32\ole32.dll
75be0000 75bf9000 sechost C:\Windows\SYSTEM32\sechost.dll
75c00000 75ccc000 MSCTF C:\Windows\system32\MSCTF.dll
75cd0000 75d1e000 GDI32 C:\Windows\system32\GDI32.dll
75e60000 75ee3000 CLBCatQ C:\Windows\system32\CLBCatQ.DLL
75fa0000 76069000 USER32 C:\Windows\system32\USER32.dll
76270000 762ff000 OLEAUT32 C:\Windows\system32\OLEAUT32.dll
7630000 76357000 SHLWAPI C:\Windows\system32\SHLWAPI.dll
76360000 76401000 RPCRT4 C:\Windows\system32\RPCRT4.dll
76410000 77059000 SHELL32 C:\Windows\system32\SHELL32.dll
77240000 772ec000 msvcrt C:\Windows\system32\msvcrt.dll
774b0000 7754d000 USP10 C:\Windows\system32\USP10.dll
77550000 77624000 kernel32 C:\Windows\system32\kernel32.dll
77630000 7776c000 ntdll C:\Windows\SYSTEM32\ntdll.dll
77770000 7778f000 IMM32 C:\Windows\system32\IMM32.DLL
777b0000 777ba000LPK C:\Windows\system32\LPK.dll
777c0000 77860000 ADVAPI32 C:\Windows\system32\ADVAPI32.dll

Możesz również znaleźć adres pobierania dla konkretnego modułu za pomocą polecenia „lmf m”:

0:005> lmf w kernel32
początek koniec nazwa modułu
77550000 77624000 kernel32 C:\Windows\system32\kernel32.dll

Możesz również uzyskać informacje o nagłówku obrazu konkretnego modułu za pomocą rozszerzenia !dh (wykrzyknik oznacza rozszerzenie):

0:005> !dh kernel32

Typ pliku: DLL
WARTOŚCI NAGŁÓWKA PLIKU
maszyna 14C (i386)
4 ilość sekcji
4A5BDAAD znacznik czasu pon Jul 13 21:09:01 2009

0 wskaźnik pliku do tablicy symboli
0 liczba symboli
Rozmiar E0 opcjonalnego nagłówka
2102 cechy
Plik wykonywalny
32-bitowa maszyna słów
DLL

OPCJONALNE WARTOŚCI NAGŁÓWKA
10B magii #
9.00 wersja konsolidatora
Kod rozmiaru C4600
Rozmiar C800 zainicjowanych danych
0 rozmiar niezainicjowanych danych
510C5 adres punktu wejścia
1000 kodu podstawowego
----- Nowy -----
77550000 baza obrazów
1000 wyrównanie sekcji
200 wyrównanie plików
3 podsystem (Windows CUI)
Wersja systemu operacyjnego 6.01
Wersja obrazu 6.01
Wersja podsystemu 6.01
Obraz w rozmiarze D4000
800 rozmiarów nagłówków
Suma kontrolna D5597
00040000 wielkość rezerwy stosu
00001000 rozmiar zatwierdzenia stosu
00100000 wielkość rezerwy hałdy
00001000 rozmiar zatwierdzenia sterty
Charakterystyka 140 DLL
dynamiczna baza
Kompatybilny z NX
B4DA8 [A915] adres katalogu eksportu
BF6C0 [1F4] adres katalogu importu
C7000 [520] adres katalogu zasobów
0 [ 0] adres katalogu wyjątków
0 [ 0] adres katalogu bezpieczeństwa
C8000 [B098] adres podstawowego katalogu relokacji
C5460 [ 38] adres katalogu debugowania
0 [ 0] adres katalogu opisów
0 [ 0] adres Katalogu Specjalnego
0 [ 0] adres katalogu przechowywania wątków
816B8 [ 40] adres katalogu konfiguracji ładowania
278 [408] adres powiązanego katalogu importu
1000 [DE8] adres katalogu tabeli adresów importu
0 [ 0] adres katalogu opóźnionego importu
0 [ 0] adres katalogu nagłówków COR20
0 [ 0] adres katalogu zastrzeżonego

NAGŁÓWEK SEKCJI #1
.nazwa tekstu
Rozmiar wirtualny C44C1
1000 wirtualnych adresów
Rozmiar surowych danych C4600
800 plik wskaźnik do surowych danych

0 liczba przeprowadzek
0 liczba numerów linii
60000020 flag
Kod
(nie określono wyrównania)
Wykonaj odczyt

Katalogi debugowania(2)
Typ Rozmiar Adres Wskaźnik
cv 25 c549c c4c9c Format: RSDS, guid, 2, kernel32.pdb
(10) 4 c5498 c4c98

NAGŁÓWEK SEKCJI #2
.nazwa danych
Wirtualny rozmiar FEC
Adres wirtualny C6000
Rozmiar surowych danych E00
Wskaźnik pliku C4E00 do surowych danych
0 wskaźnik pliku do tabeli relokacji
0 plik wskaźnik do numerów linii
0 liczba przeprowadzek
0 liczba numerów linii
C0000040 flagi
zainicjowane dane
(nie określono wyrównania)
Czytaj Napisz

NAGŁÓWEK SEKCJI #3
.rsrc nazwa
520 wirtualny rozmiar
Adres wirtualny C7000
600 rozmiar surowych danych
Wskaźnik pliku C5C00 do surowych danych
0 wskaźnik pliku do tabeli relokacji
0 plik wskaźnik do numerów linii
0 liczba przeprowadzek
0 liczba numerów linii
40000040 flag
zainicjowane dane
(nie określono wyrównania)
Tylko czytać

NAGŁÓWEK SEKCJI #4
.nazwa_relokacji
B098 wirtualny rozmiar
Adres wirtualny C8000
Rozmiar surowych danych B200
C6200 wskaźnik pliku do surowych danych
0 wskaźnik pliku do tabeli relokacji
0 plik wskaźnik do numerów linii
0 liczba przeprowadzek
0 liczba numerów linii
42000040 flag
zainicjowane dane
Wyrzucalne
(nie określono wyrównania)
Tylko czytać

Wiadomości i wyjątki

Po dołączeniu do procesu najpierw wyświetlana jest lista modułów, a następnie mogą pojawić się inne komunikaty. Na przykład, kiedy podłączamy się do calc.exe, WinDBG automatycznie ustawia punkt przerwania (który jest tylko znacznikiem używanym do zatrzymania aplikacji). Informacje o punkcie przerwania są wyświetlane na ekranie:

(da8.b44): Wyjątek instrukcji przerwania - kod 80000003 (pierwsza szansa)

Ta konkretna wiadomość jest wyjątkiem, a mianowicie wyjątkiem pierwszej szansy. Zasadniczo wyjątek to specjalny warunek, który występuje podczas wykonywania programu. Wyjątek pierwszej szansy oznacza, że ​​program zatrzymał się natychmiast po wystąpieniu wyjątku. Wyjątek drugiej szansy oznacza, że ​​po wystąpieniu wyjątku zostaną wykonane pewne operacje, a następnie program przestanie działać.

Rejestry

Po wyświetleniu komunikatów i wyjątków debugger wyprowadza stan rejestrów procesora. Rejestry to specjalne zmienne w procesorze, które przechowują małe fragmenty informacji lub śledzą stan czegoś w pamięci. Procesor może bardzo szybko przetwarzać informacje w tych rejestrach. Jest to znacznie szybsze niż uzyskiwanie za każdym razem informacji o magistrali z pamięci RAM.

Po połączeniu się z calc.exe, WinDBG automatycznie wyświetla informacje o następujących rejestrach:

eax=7ffd9000 ebx=00000000 ecx=00000000 edx=776cd23d esi=00000000 edi=00000000
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246

Później możesz ponownie zduplikować te informacje za pomocą polecenia r:

0:005>r
eax=7ffd9000 ebx=00000000 ecx=00000000 edx=776cd23d esi=00000000 edi=00000000
eip=77663540 esp=02affd9c ebp=02affdc8 iopl=0 nv up ei pl zr na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246
ntdll! DbgBreakPoint:
77663540 cm3 wewn. 3

Jeśli chcemy uzyskać wartość konkretnego rejestru, możemy wykonać następujące polecenie:

0:005> r eax
eax=7ffd9000

Informacje można uzyskać jednocześnie z kilku rejestrów w następujący sposób:

0:005> reax,ebp
eax=7ffd9000 ebp=02affdc8

Wskaźnik do instrukcji

Ostatnie polecenie dotyczy uruchamiania instrukcji. Tutaj również wyświetlana jest informacja, podobnie jak w przypadku polecenia r, co zawiera rejestr EIP. EIP to rejestr zawierający lokalizację następnej instrukcji do wykonania przez procesor. To, co wyświetla WinDBG, jest odpowiednikiem polecenia ueip L1, po wykonaniu którego WinDBG udaje się na adres podany w rejestrze EIP, konwertuje tę sekcję na kod asemblera i wyświetla go na ekranie.

ntdll! DbgBreakPoint:
77663540 cm3 wewn. 3

pozostać w kontakcie

W kolejnych artykułach przyjrzymy się, jak używać WinDBG w walce: punkty przerwania, debugowanie krokowe i przeglądanie pamięci. Nie zmieniaj! J.

Aby zidentyfikować przyczyny niebieskich ekranów (BSOD), konieczne jest przeanalizowanie zrzutu pamięci. W zdecydowanej większości przypadków wystarczy minizrzut, który jest tworzony przez system w przypadku wystąpienia błędów krytycznych.
Ten artykuł zawiera instrukcje krok po kroku dotyczące instalowania i konfigurowania WinDBG, potężnego narzędzia do debugowania, które pozwala zidentyfikować prawdziwą przyczynę BSOD.

Krok 1 — Konfiguracja nagrywania małego zrzutu pamięci

Krok 2 — Instalacja WinDBG

Aby analizować zrzuty pamięci, musisz zainstalować debugger WinDBG, który jest dołączony do zestawu Windows SDK. W chwili pisania tego tekstu najnowsze dostępne wersje Windows SDK to:

  • Windows 10 SDK (pobierz instalator online)
  • Windows 8.1 SDK (pobierz instalator online)

Krok 3 — Mapowanie plików .dmp do WinDBG

Zamapuj swoje pliki .dmp na WinDBG, aby ułatwić odczytywanie i analizowanie zrzutów pamięci. Umożliwi to otwieranie plików zrzutu z Eksploratora bezpośrednio w WinDBG, z pominięciem jego wstępnego uruchomienia.


Krok 4 — Konfiguracja serwera symboli do odbierania plików symboli debugowania


Instalacja i początkowa konfiguracja WinDBG została zakończona. Aby zmienić jego wygląd, możesz przejść do menu pogląd- ustawienia czcionek znajdziesz wybierając element Czcionka i ustawienia okna konsoli w Opcje.

Aby zidentyfikować przyczyny niebieskich ekranów (BSOD), konieczne jest przeanalizowanie zrzutu pamięci. W zdecydowanej większości przypadków wystarczy minizrzut, który jest tworzony przez system w przypadku wystąpienia błędów krytycznych.
Ten artykuł zawiera instrukcje krok po kroku dotyczące instalowania i konfigurowania WinDBG, potężnego narzędzia do debugowania, które pozwala zidentyfikować prawdziwą przyczynę BSOD.

Krok 1 — Konfiguracja nagrywania małego zrzutu pamięci

Krok 2 — Instalacja WinDBG

Aby analizować zrzuty pamięci, musisz zainstalować debugger WinDBG, który jest dołączony do zestawu Windows SDK. W chwili pisania tego tekstu najnowsze dostępne wersje Windows SDK to:

  • Windows 10 SDK (pobierz instalator online)
  • Windows 8.1 SDK (pobierz instalator online)

Krok 3 — Mapowanie plików .dmp do WinDBG

Zamapuj swoje pliki .dmp na WinDBG, aby ułatwić odczytywanie i analizowanie zrzutów pamięci. Umożliwi to otwieranie plików zrzutu z Eksploratora bezpośrednio w WinDBG, z pominięciem jego wstępnego uruchomienia.


Krok 4 — Konfiguracja serwera symboli do odbierania plików symboli debugowania


Instalacja i początkowa konfiguracja WinDBG została zakończona. Aby zmienić jego wygląd, możesz przejść do menu pogląd- ustawienia czcionek znajdziesz wybierając element Czcionka i ustawienia okna konsoli w Opcje.

Narzędzia do debugowania dla Windows- Narzędzia do debugowania kodu systemów operacyjnych Windows. Jest to zestaw swobodnie dystrybuowanych programów firmy Microsoft przeznaczonych do debugowania kodu trybu użytkownika i trybu jądra: aplikacji, sterowników, usług, modułów jądra. Zestaw narzędzi zawiera debugery konsoli i GUI, narzędzia do pracy z symbolami, plikami, procesami, narzędzia do zdalnego debugowania. Zestaw narzędzi zawiera narzędzia, za pomocą których można znaleźć przyczyny awarii w różnych komponentach systemu. Narzędzia do debugowania dla Windows od pewnego momentu nie są one dostępne do pobrania w formie samodzielnej dystrybucji i są częścią zestawu Windows SDK (Windows Software Development Kit). Z kolei Windows SDK jest dostępny w ramach programu subskrypcji MSDN lub można go bezpłatnie pobrać jako oddzielną dystrybucję ze strony msdn.microsoft.com. Według twórców najnowsza i najbardziej aktualna wersja narzędzi debugowania dla systemu Windows jest zawarta w Windows SDK.

Narzędzia debugowania dla systemu Windows są dość często aktualizowane i udostępniane publicznie, a proces ten nie zależy od wydania systemów operacyjnych. Dlatego okresowo sprawdzaj dostępność nowych wersji.

Zobaczmy teraz, co w szczególności umożliwiają nam narzędzia debugowania dla systemu Microsoft Windows:

  • Debugowanie lokalnych aplikacji, usług (usług), sterowników i jądra;
  • Debuguj zdalne aplikacje, usługi (usługi), sterowniki i jądro przez sieć;
  • Debuguj działające aplikacje w czasie rzeczywistym;
  • Analizuj pliki zrzutu pamięci aplikacji, jądra i systemu jako całości;
  • Praca z systemami opartymi na architekturach x86/x64/Itanium;
  • Debuguj programy trybu użytkownika i trybu jądra;

Dostępne są następujące wersje narzędzi debugowania dla systemu Windows: 32-bit x86, Intel Itanium, 64-bit x64. Potrzebujemy dwóch z nich: x86 lub x64.

Istnieje kilka sposobów instalacji narzędzi debugowania dla systemu Windows, w tym artykule rozważymy tylko te główne:

  • Instalacja za pomocą instalatora internetowego.
  • Instalowanie narzędzi debugowania dla systemu Windows z systemu Windows SDK ISO.
  • Instalowanie narzędzi debugowania dla systemu Windows bezpośrednio z pakietów dbg_amd64.msi /dbg_x86.msi.

Nie jest jasne, w którym momencie, dlaczego powinienem instalować narzędzia do debugowania na komputerze? Często w końcu spotykasz się z sytuacją, w której interwencja w środowisku pracy jest wyjątkowo niepożądana! A tym bardziej, że instalacja nowego produktu, czyli wprowadzanie zmian w rejestrze/plikach systemowych, może być całkowicie nie do zaakceptowania. Przykładami są serwery o znaczeniu krytycznym. Dlaczego programiści nie biorą pod uwagę przenośnych wersji aplikacji, które nie wymagają instalacji?
Od wersji do wersji proces instalacji pakietu Debugging Tools for Windows ulega pewnym zmianom. Przejdźmy teraz od razu do procesu instalacji i przyjrzyjmy się sposobom instalacji zestawu narzędzi.

Instalowanie narzędzi do debugowania w systemie Windows za pomocą instalatora internetowego

Przejdź do strony archiwum Windows SDK i znajdź sekcję o nazwie Windows 10 i poniżej pozycji „Windows 10 SDK (10586) i Microsoft Windows 10 Mobile Device Emulator (wersja 10586.11)”.

Kliknij przedmiot ZAINSTALUJ SDK. Po kliknięciu pobierz i uruchom plik sdksetup.exe, który inicjuje proces instalacji online Windows SDK. Na początkowym etapie instalator sprawdzi, czy w systemie jest zainstalowana najnowsza wersja pakietu .NET Framework (obecnie jest to 4.5). Jeśli brakuje pakietu, zostanie zaoferowana instalacja, a po zakończeniu stacja zostanie ponownie uruchomiona. Zaraz po restarcie, na etapie autoryzacji użytkownika, proces instalacji rozpoczyna się bezpośrednio z Windows SDK.

Często przy wyborze wszystkich składników pakietu bez wyjątku mogą wystąpić błędy podczas procesu instalacji. W takim przypadku zaleca się selektywne instalowanie komponentów, minimalnego wymaganego zestawu.

Po zakończeniu instalacji narzędzi debugowania dla systemu Windows lokalizacja plików debugowania przy użyciu tej metody instalacji będzie następująca:

  • Wersje 64-bitowe: C:\Program Files (x86)\Windows Kits\x.x\Debuggers\x64
  • Wersje 32-bitowe: C:\Program Files (x86)\Windows Kits\x.x\Debuggers\x86

* gdzie x.x to konkretna wersja zestawu deweloperskiego;
Czy zauważyłeś, że w wersjach 8 i wyższych ścieżki instalacji wyraźnie różnią się od klasycznych dla wszystkich poprzednich wersji narzędzi do debugowania?

Ogromną zaletą tej metody instalacji Debigging Tools for Windows jest instalacja wersji narzędzi debugowania dla wszystkich architektur jednocześnie.

Instalowanie narzędzi do debugowania dla systemu Windows z systemu Windows SDK ISO

Ta metoda polega na zainstalowaniu narzędzi debugowania dla systemu Windows przy użyciu pełnego obrazu instalacyjnego zestawu Windows SDK (Software Developers Kit). Do pewnego czasu można było pobrać obraz ISO dla odpowiedniego systemu na stronie archiwum Windows SDK. Jednak w tej chwili możesz uzyskać obraz ISO zestawu SDK, uruchamiając instalator internetowy sdksetup.exe i wybierając element Pobierz zestaw programistyczny dla systemu Windows w oknie startowym instalatora:

Jak się okazało, poprzednia metoda instalacji za pomocą instalatora internetowego jest dość kapryśna i często kończy się niepowodzeniem. W czystych systemach instaluje się bez problemów, ale w wystarczająco obciążonych systemach pojawiają się liczne problemy. Jeśli tak jest w Twoim przypadku, użyj tej metody.

W związku z tym na stronie należy wybrać wymagany pakiet dystrybucyjny, dla mnie (a myślę, że dla wielu) w tej chwili jest to „Windows SDK dla Windows 7 i .NET Framework 4” i nieco niżej kliknij link „Pobierz Obraz ISO DVD” .

Podczas pracy z witryną msdn.microsoft.com radzę korzystać z przeglądarki Internet Explorer, ponieważ zauważono przypadki niedziałania konkurencyjnych produktów!

W związku z tym należy wybierać tylko w razie potrzeby. Zazwyczaj bitowość narzędzi debugowania dla systemu Windows jest taka sama, jak bitowość systemu. Moje systemy testowe są w większości 64-bitowe, więc w większości przypadków pobieram obraz dla systemu 64-bitowego GRMSDKX_EN_DVD.iso .
Następnie po pobraniu obrazu musimy jakoś popracować z istniejącym obrazem ISO. Tradycyjnym sposobem jest oczywiście wypalenie płyty CD, ale jest to dość długa i czasami kosztowna metoda. Proponuję skorzystać z darmowych narzędzi do tworzenia wirtualnych urządzeń dyskowych w systemie. Osobiście wolę używać do tego celu programu DEAMON Tools Lite. Ktoś może mieć inne preferencje, bardziej bezpośrednie lub lżejsze narzędzia, smak i kolor, jak mówią. Po zainstalowaniu DAEMON Tools Lite, po prostu klikam dwukrotnie plik obrazu GRMSDKX_EN_DVD.iso i mam nowy wirtualny dysk kompaktowy:

Następnie, klikając dwukrotnie, aktywuję automatyczne ładowanie i rozpoczynam instalację Windows SDK:

Gdy przychodzi kolej na wybranie z listy komponentów do zainstalowania, wyłączamy absolutnie wszystkie opcje poza zaznaczonymi na zrzucie ekranu. Pomoże nam to już teraz uniknąć niepotrzebnych błędów.


Zgadza się, zrzut ekranu pokazuje dwie opcje: „Windows Performance Toolkit” i „Debugging Tools for Windows”. Wybierz oba, ponieważ Windows Performance Toolkit z pewnością przyda się w Twojej pracy! Ponadto po kliknięciu przycisku „Dalej” instalacja jest kontynuowana w trybie normalnym. A na końcu zobaczysz napis „Instalacja zakończona”.
Po zakończeniu instalacji katalogi robocze zestawu Debugging Tools for Windows będą wyglądać następująco:

  • Dla wersji x86:
  • Dla wersji x64:

To kończy instalację narzędzi debugowania dla systemu Windows.

Instalowanie narzędzi do debugowania dla systemu Windows za pomocą pliku .msi

W przypadku problemów podczas instalacji Debugging Tools for Windows na dwa poprzednie sposoby, nadal mamy jeszcze jeden, najbardziej niezawodny i sprawdzony w czasie, który pomogł, że tak powiem, nie raz. Kiedyś, przed integracją z Windows SDK, Debugging Tools for Windows był dostępny jako osobny instalator .msi, który wciąż można znaleźć, ale już w trzewiach dystrybucji Windows SDK. Ponieważ mamy już pod ręką obraz ISO Windows SDK, nie możemy go zamontować w systemie, ale po prostu otworzyć go za pomocą znanego archiwizatora WinRAR lub dowolnego innego produktu, który współpracuje z zawartością dysków ISO.

Po otwarciu obrazu musimy przejść do katalogu „Setup” znajdującego się w katalogu głównym, a następnie wybrać jeden z katalogów:

  • Aby zainstalować wersję 64-bitową: \Setup\WinSDKDebuggingTools_amd64 i rozpakuj plik dbg_amd64.msi z tego katalogu.
  • Aby zainstalować wersję 32-bitową: \Setup\WinSDKDebuggingTools i rozpakuj plik dbg_x86.msi z tego katalogu.

Po zakończeniu instalacji katalogi robocze zestawu Debugging Tools for Windows będą wyglądać następująco:

  • Dla wersji x86: C:\Program Files (x86)\Debugging Tools for Windows (x86)
  • Dla wersji x64: C:\Program Files\Debugging Tools dla Windows (x64)

W tym momencie instalację narzędzi debugowania dla systemu Windows można uznać za zakończoną.

Dodatkowe informacje

Nie wiem z czym to się wiąże, może z mojej nieuwagi, ale po zainstalowaniu Debugging Tools for Windows instalator nie ustawia ścieżki do katalogu z debuggerem w zmiennej Path system path. Nakłada to pewne ograniczenia na uruchamianie różnych zadań debugowania bezpośrednio z konsoli. Dlatego w przypadku braku ścieżki sam piszę w oknie Zmienne środowiskaścieżka do narzędzi debugowania:

  • C:\Program Files (x86)\Windows Kits\10\Debuggers\x86
  • C:\Program Files (x86)\Windows Kits\10\Debuggers\x64

* W Twoim przypadku ścieżki mogą się różnić zarówno ze względu na użycie systemu operacyjnego o innej bitowości, jak i ze względu na użycie SDK w innej wersji.

Narzędzia pakietu Debugging Tools for Windows mogą działać jako aplikacje przenośne, wystarczy skopiować katalog z działającego systemu Zestaw narzędzi wydajności systemu Microsoft Windows i używać go jako wersji przenośnej na serwerze produkcyjnym. Ale nie zapomnij wziąć pod uwagę pojemności systemu !! Nawet jeśli wykonałeś pełną instalację pakietu w krytycznym systemie, możesz rozpocząć pracę zaraz po instalacji, nie jest wymagane ponowne uruchomienie.

Narzędzia do debugowania dla Windows

A teraz, wreszcie, oto skład narzędzi debugowania dla systemu Windows:

Plik Zamiar
adplus.doc Dokumentacja narzędzia ADPlus.
adplus.exe Aplikacja konsolowa, która automatyzuje pracę debugera cdb w celu tworzenia zrzutów, plików dziennika dla jednego lub więcej procesów.
agestore.exe Narzędzie do usuwania przestarzałych plików z pamięci używanej przez serwer symboli lub serwer źródłowy.
breakin.exe Narzędzie, które umożliwia wysyłanie niestandardowej kombinacji przerw do procesów, podobnie jak naciśnięcie CTRL+C.
cdb.exe Debuger konsoli trybu użytkownika.
convertstore.exe Narzędzie do konwersji postaci z dwupoziomowych na trzypoziomowe.
dbengprx.exe Ripiter (serwer proxy) do zdalnego debugowania.
dbgpc.exe Narzędzie do wyświetlania informacji o stanie wywołania RPC.
dbgsrv.exe Proces serwera używany do zdalnego debugowania.
dbh.exe Narzędzie do wyświetlania informacji o zawartości pliku symboli.
dumpchk.exe Narzędzie do weryfikacji zrzutu. Narzędzie do szybkiego sprawdzania pliku zrzutu.
dumpexam.exe Narzędzie do analizy zrzutu pamięci. Wynik jest wyprowadzany do %SystemRoot%\MEMORY.TXT .
gflags.exe Edytor globalnych flag systemowych. Narzędzie zarządza kluczami rejestru i innymi ustawieniami.
i386kd.exe Opakowanie dla kd. Czy tak nazywało się kiedyś kd dla systemów opartych na Windows NT/2000 dla maszyn x86? Prawdopodobnie pozostawiony ze względu na kompatybilność.
ia64kd.exe Opakowanie dla kd. Czy tak kiedyś nazywało się kd dla systemów opartych na Windows NT/2000 dla maszyn ia64? Prawdopodobnie pozostawiony ze względu na kompatybilność.
kd.exe Debuger konsoli trybu jądra.
kdbgctrl.exe Narzędzie do zarządzania debugowaniem jądra. Narzędzie do zarządzania i konfigurowania połączenia debugowania jądra.
kdsrv.exe Serwer połączeń dla KD. Narzędzie to mała aplikacja, która działa i czeka na połączenia zdalne. kd działa na kliencie i łączy się z tym serwerem w celu zdalnego debugowania. Zarówno serwer, jak i klient muszą pochodzić z tego samego zestawu narzędzi debugowania.
kill.exe Użyteczność do zakończenia procesów.
list.exe Narzędzie do wyświetlania zawartości pliku na ekranie. To miniaturowe narzędzie zostało dołączone do jednego celu - przeglądania dużych plików tekstowych lub dzienników. Zajmuje mało miejsca w pamięci, ponieważ ładuje tekst w częściach.
logger.exe Mały debugger, który może działać tylko z jednym procesem. Narzędzie wstrzykuje plik logexts.dll do przestrzeni procesu, która rejestruje wszystkie wywołania funkcji i inne działania badanego programu.
logviewer.exe Narzędzie do przeglądania dzienników napisanych przez debuger logger.exe.
ntsd.exe Debuger symboliczny Microsoft NT (NTSD). Debuger, który jest identyczny z cdb, z tą różnicą, że podczas uruchamiania tworzy okno tekstowe. Podobnie jak cdb, ntsd może debugować zarówno aplikacje konsolowe, jak i aplikacje graficzne.
pdbcopy.exe Narzędzie do usuwania prywatnych symboli z pliku symboli, kontrolujące publiczne symbole zawarte w pliku symboli.
remote.exe Narzędzie do zdalnego debugowania i zdalnego sterowania dowolnym debuggerem konsoli KD, CDB i NTSD. Umożliwia zdalne uruchamianie wszystkich tych debugerów konsoli.
rtlist.exe Zdalna przeglądarka zadań. Narzędzie służy do wyświetlania listy uruchomionych procesów za pośrednictwem procesu serwera DbgSrv.
symchk.exe Narzędzie do pobierania symboli z serwera symboli firmy Microsoft i tworzenia lokalnej pamięci podręcznej symboli.
symstore.exe Narzędzie do tworzenia sieci lub lokalnego przechowywania symboli (2-warstwa/3-warstwa). Magazyn symboli to wyspecjalizowany katalog na dysku, który jest zbudowany zgodnie z określoną strukturą i zawiera symbole. W głównym katalogu symboli tworzona jest struktura podfolderów z nazwami identycznymi z nazwami komponentów. Z kolei każdy z tych podfolderów zawiera zagnieżdżone podfoldery o specjalnych nazwach uzyskanych przez mieszanie plików binarnych. Narzędzie symstore skanuje foldery komponentów i dodaje nowe komponenty do magazynu symboli, skąd każdy klient może je pobrać. Mówi się, że symstore jest używany do pobierania symboli z magazynu warstwy 0 i umieszczania ich w magazynie 2-warstwowym/3-warstwowym.
tlist.exe Przeglądarka zadań. Narzędzie do wyświetlania listy wszystkich uruchomionych procesów.
umdh.exe Narzędzie zrzutu sterty trybu użytkownika. Narzędzie do analizy stosów wybranego procesu. Pozwala wyświetlić różne opcje sterty.
usbview.exe Przeglądarka USB. Narzędzie do przeglądania urządzeń USB podłączonych do komputera.
vmdemux.exe Demultiplekser maszyn wirtualnych. Tworzy wiele nazwanych potoków dla jednego połączenia COM. Kanały służą do debugowania różnych komponentów maszyny wirtualnej
windbg.exe Debuger trybu użytkownika i trybu jądra z graficznym interfejsem użytkownika.