Udostępnij za pośrednictwem


Środowiska debugowania

Istnieją sześć dostępnych środowisk debugowania:

  • WinDbg
  • WinDbg (wersja klasyczna)
  • Debuger jądra (KD)
  • NTKD
  • Debuger konsoli (CDB)
  • Debuger symboliczny NT (NTSD)

W poniższych sekcjach opisano środowiska debugowania.

WinDbg

WinDbg to najnowsza wersja WinDbg z nowoczesnym wizualnym interfejsem, szybszymi oknami i pełnymi możliwościami skryptowymi, zbudowaną wokół rozszerzalnego modelu danych debugera. WinDbg używa tego samego aparatu bazowego co WinDbg (wersja klasyczna), więc wszystkie polecenia, rozszerzenia i workflowy, do których jesteś przyzwyczajony, będą nadal działać tak jak wcześniej.

Aby uzyskać więcej informacji, zobacz Funkcje WinDbg

WinDbg (wersja klasyczna)

Microsoft Windows Debugger WinDbg (wersja klasyczna) to debuger oparty na systemie Windows, który może debugować zarówno w trybie użytkownika, jak i w trybie jądra. WinDbg zapewnia debugowanie dla jądra systemu Windows, sterowników trybu jądra i usług systemowych, a także aplikacji i sterowników trybu użytkownika.

WinDbg używa formatów symboli debugowania programu Visual Studio na potrzeby debugowania na poziomie źródła. Może uzyskać dostęp do dowolnego symbolu lub zmiennej z modułu, który zawiera pliki symboli PDB i może uzyskać dostęp do dowolnej nazwy funkcji publicznej uwidocznionej przez moduły skompilowane za pomocą plików symboli COFF (takich jak pliki dbg systemu Windows).

WinDbg może wyświetlać kod źródłowy, ustawiać punkty przerwania, wyświetlać zmienne (w tym obiekty języka C++), ślady stosu i pamięć. Okno Polecenia debugera umożliwia użytkownikowi wydawanie różnych poleceń.

W przypadku debugowania w trybie jądra usługa WinDbg zwykle wymaga dwóch komputerów (komputera hosta i komputera docelowego). Usługa WinDbg obsługuje również różne opcje zdalnego debugowania dla obiektów docelowych trybu użytkownika i jądra.

WinDbg to graficzny odpowiednik interfejsu CDB/NTSD i KD/NTKD.

KD

Microsoft Kernel Debugger (KD) to program konsoli oparty na znakach, który umożliwia dogłębną analizę działania trybu jądra we wszystkich systemach operacyjnych opartych na NT. Za pomocą KD można debugować składniki i sterowniki trybu jądra lub monitorować zachowanie samego systemu operacyjnego. Funkcja KD obsługuje również debugowanie wieloprocesorowe.

Zazwyczaj funkcja KD nie jest uruchamiana na debugowanym komputerze. Do debugowania w trybie jądra potrzebne są dwa komputery ( komputer hosta i komputer docelowy).

NTKD

Istnieje odmiana debugera KD o nazwie NTKD. Jest identyczna z KD pod każdym względem, z tą różnicą, że otwiera nowe okno tekstowe podczas uruchamiania, podczas gdy KD przejmuje okno wiersza polecenia, z którego został uruchomiony.

CDB

Microsoft Console Debugger (CDB) to oparty na znakach program konsoli, który umożliwia analizę niskiego poziomu pamięci i konstrukcji trybu użytkownika systemu Windows. Nazwa Debuger konsoli służy do wskazywania faktu, że usługa CDB jest klasyfikowana jako aplikacja konsolowa; nie oznacza to, że aplikacja docelowa musi być aplikacją konsolową. W rzeczywistości usługa CDB jest w pełni w stanie debugować zarówno aplikacje konsolowe, jak i graficzne programy systemu Windows.

Usługa CDB jest niezwykle zaawansowana do debugowania programu, który jest aktualnie uruchomiony lub niedawno uległ awarii (analiza na żywo), ale jest prosty do skonfigurowania. Może służyć do zbadania zachowania działającej aplikacji. W przypadku aplikacji, która kończy się niepowodzeniem, usługa CDB może służyć do uzyskania śladu stosu lub przyjrzenia się winnym parametrom. Działa dobrze w sieci (przy użyciu serwera dostępu zdalnego), ponieważ jest oparty na znakach.

Za pomocą usługi CDB można wyświetlać i wykonywać kod programu, ustawiać punkty przerwania oraz sprawdzać i zmieniać wartości w pamięci. CDB może analizować kod binarny, dezasemblując go i wyświetlając instrukcje asemblerowe. Może również bezpośrednio analizować kod źródłowy.

Ponieważ usługa CDB może uzyskiwać dostęp do lokalizacji pamięci za pośrednictwem adresów lub symboli globalnych, można odwoływać się do danych i instrukcji według nazwy, a nie według adresu, co ułatwia lokalizowanie i debugowanie określonych sekcji kodu. Usługa CDB obsługuje debugowanie wielu wątków i procesów. Jest rozszerzalny i może odczytywać i zapisywać zarówno stronicowane, jak i niestronicowane pamięci.

Jeśli aplikacja docelowa jest aplikacją konsolową, obiekt docelowy udostępni okno konsoli usłudze CDB. Aby otworzyć nowe okno konsoli dla docelowej aplikacji konsolowej, użyj opcji wiersza polecenia -2.

NTSD

Istnieje odmiana debugera CDB o nazwie Microsoft NT Symboliczny Debugger (NTSD). Jest ona identyczna z CDB pod każdym względem, z tą różnicą, że otwiera nowe okno tekstowe podczas uruchamiania, podczas gdy CDB dziedziczy okno wiersza polecenia, z którego została uruchomiona.

Ponieważ polecenia start można również użyć do otworzenia nowego okna konsoli, następujące dwie konstrukcje dadzą te same wyniki:

start cdb parameters
ntsd parameters

Istnieje możliwość przekierowania danych wejściowych i wyjściowych z NTSD (lub CDB), aby można było go kontrolować z debugera jądra (Visual Studio, WinDbg lub KD). Jeśli ta technika jest używana z NTSD, żadne okno konsoli nie zostanie wyświetlone w ogóle. Kontrola debugera NTSD za pomocą debugera jądra jest zatem szczególnie przydatna, ponieważ tworzy wyjątkowo lekki debuger, który prawie wcale nie obciąża komputera, na którym znajduje się aplikacja docelowa. Ta kombinacja może służyć do debugowania procesów systemowych, zamykania i późniejszego etapu rozruchu. Aby uzyskać szczegółowe informacje, zobacz Kontrolowanie debugera User-Mode z debugera jądra.

Zobacz również

Debugowanie systemu Windows

Funkcje WinDbg