Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule wyjaśniono, jak rozpocząć debugowanie systemu Windows przy użyciu narzędzia WinDbg i innych narzędzi do debugowania. Dowiesz się, jak:
- Instalowanie debugera i konfigurowanie systemów hostów i docelowych
- Konfigurowanie środowiska debugowania
- Opanuj kluczowe techniki debugowania w scenariuszach trybu jądra i trybu użytkownika
Nuta: Jeśli zamiast tego chcesz przeanalizować zrzut awaryjny, zobacz Analizowanie plików zrzutu awaryjnego przy użyciu narzędzia WinDbg.
Aby rozpocząć debugowanie systemu Windows, wykonaj następujące kroki.
1. Instalowanie debugera systemu Windows
Zainstaluj usługę WinDbg, aby rozpocząć debugowanie aplikacji i sterowników systemu Windows. Aby uzyskać szczegółowe instrukcje instalacji, zobacz Instalowanie usługi WinDbg.
2. Identyfikowanie hostów i systemów docelowych
Dwa oddzielne systemy komputerowe są zwykle używane do debugowania, ponieważ wykonywanie instrukcji na procesorze jest często wstrzymane podczas procesu. Debuger działa w systemie hosta , a kod, który chcesz debugować, jest uruchamiany w docelowym systemie .
serwer <--------------------------------------------------> docelowy
W niektórych sytuacjach można użyć maszyny wirtualnej jako drugiego systemu. Na przykład wirtualny komputer może działać na tym samym komputerze co kod, który należy debugować. Jeśli jednak kod komunikuje się ze sprzętem niskiego poziomu, użycie komputera wirtualnego może nie być najlepszym rozwiązaniem. Aby uzyskać więcej informacji, zobacz Konfigurowanie debugowania sieci maszyny wirtualnej — KDNET.
3. Określanie typu debugera: tryb jądra lub tryb użytkownika
Następnie należy określić, czy należy używać debugowania w trybie jądra, czy w trybie użytkownika.
System operacyjny i programy uprzywilejowane działają w trybie jądra . Kod trybu jądra ma uprawnienia dostępu do dowolnej części systemu i nie jest ograniczony jak kod trybu użytkownika. Kod trybu jądra może uzyskać dostęp do dowolnej części dowolnego innego procesu uruchomionego w trybie użytkownika lub w trybie jądra. Większość podstawowych funkcji systemu operacyjnego i wiele sterowników urządzeń sprzętowych działa w trybie jądra.
Aplikacje i podsystemy na komputerze działają w trybie użytkownika. Procesy uruchamiane w trybie użytkownika robią to we własnych wirtualnych przestrzeniach adresowych. Są one ograniczone do uzyskiwania bezpośredniego dostępu do wielu części systemu, w tym sprzętu systemowego, pamięci, która nie jest przydzielona do ich użycia, oraz innych części systemu, które mogą naruszyć integralność systemu. Procesy uruchamiane w trybie użytkownika są skutecznie odizolowane od systemu i z innych procesów trybu użytkownika, dzięki czemu nie mogą zakłócać tych zasobów.
Jeśli twoim celem jest debugowanie sterownika, ustal, czy sterownik jest sterownikiem trybu jądra lub sterownikiem trybu użytkownika. Sterowniki Windows Driver Model (WDM) i Kernel-Mode Driver Framework (KMDF) to sterowniki trybu jądra. Jak sugeruje nazwa, sterowniki User-Mode Driver Framework (UMDF) są sterownikami trybu użytkownika.
W przypadku niektórych problemów trudno jest określić tryb wykonywany przez kod. W takim przypadku może być konieczne wybranie jednego trybu i sprawdzenie, jakie informacje są dostępne w tym trybie. Niektóre problemy wymagają użycia debugera zarówno w trybie użytkownika, jak i w trybie jądra.
W zależności od trybu debugowania może być konieczne skonfigurowanie i użycie debugerów na różne sposoby. Niektóre polecenia debugowania działają tak samo w obu trybach, a niektóre polecenia działają inaczej.
Następne kroki debugowania w trybie jądra
- Wprowadzenie do systemu WinDbg (tryb jądra) — ukończ instalację i pierwszą sesję debugowania
- Debugowanie uniwersalnych sterowników: laboratorium krok po kroku (echo tryb jądra) — prace praktyczne ze sterownikiem echo
- Sterowniki debugujące: laboratorium z instruktażem krok po kroku (tryb jądra Sysvad) — warsztat praktyczny ze sterownikiem audio
Następne kroki debugowania w trybie użytkownika
- Wprowadzenie do usługi WinDbg (tryb użytkownika) — ukończ instalację i pierwszą sesję debugowania
4. Wybierz środowisko debugera
Debuger WinDbg działa dobrze w większości sytuacji, ale czasami warto użyć innego debugera, takiego jak debugery konsoli na potrzeby automatyzacji lub programu Visual Studio. Aby uzyskać więcej informacji, zobacz Debugowanie środowisk.
5. Określanie sposobu nawiązywania połączenia z obiektem docelowym i hostem
Zazwyczaj łączy się systemy docelowe i systemy hostów przy użyciu sieci Ethernet. Jeśli wykonujesz wczesne prace uruchomieniowe lub nie masz połączenia Ethernet na urządzeniu, dostępne są inne opcje połączeń sieciowych. Aby uzyskać więcej informacji, zobacz następujące artykuły:
- Skonfiguruj debugowanie jądra sieci KDNET automatycznie
- Skonfiguruj debugowanie sieci dla maszyny wirtualnej — KDNET
6. Wybierz 32-bitowe lub 64-bitowe narzędzia do debugowania
Niezależnie od tego, czy potrzebujesz debugera 32-bitowego, czy 64-bitowego, zależy od wersji systemu Windows działającej na systemach docelowych i hostujących oraz od tego, czy debugujesz kod 32-bitowy, czy 64-bitowy. Aby uzyskać więcej informacji, zobacz Wybieranie 32-bitowych lub 64-bitowych narzędzi debugowania.
7. Konfigurowanie symboli
Aby użyć wszystkich zaawansowanych funkcji zapewnianych przez usługę WinDbg, należy załadować odpowiednie symbole. Jeśli symbole nie są prawidłowo konfigurowane, podczas próby użycia funkcji, która zależy od symboli, otrzymujesz komunikaty wskazujące, że symbole nie są dostępne. Aby uzyskać więcej informacji, zobacz Symbole debugowania systemu Windows.
8. Konfigurowanie kodu źródłowego
Jeśli twoim celem jest debugowanie własnego kodu źródłowego, musisz skonfigurować ścieżkę do kodu źródłowego. Aby uzyskać więcej informacji, odwiedź ścieżkę źródłową.
9. Zapoznaj się z operacją debugera
W sekcji Operacji debugera tej dokumentacji opisano operację debugera dla różnych zadań. Na przykład Przechowywanie pliku dziennika w usłudze WinDbg opisuje sposób zapisywania pliku dziennika, który rejestruje sesję debugowania.
10. Zapoznaj się z technikami debugowania
standardowe techniki debugowania mają zastosowanie do większości scenariuszy debugowania, a przykłady obejmują ustawianie punktów przerwania, inspekcję stosu wywołań i znalezienie przecieku pamięci. wyspecjalizowane techniki debugowania mają zastosowanie do określonych technologii lub typów kodu. Przykłady obejmują debugowanie Plug and Play, debugowanie KMDF i debugowanie RPC.
11. Użyj poleceń referencyjnych debugera
Możesz użyć różnych poleceń debugowania podczas pracy w debugerze. Aby uzyskać pomoc dotyczącą dowolnego polecenia podczas debugowania, użyj .hh polecenia, po którym następuje nazwa polecenia.
Przykłady:
.hh bp # Get help on breakpoint commands
.hh k # Get help on call stack commands
Aby uzyskać pełną listę dostępnych poleceń, zobacz Dokumentacja debugera.
12. Używanie rozszerzeń debugowania dla określonych technologii
Do analizowania struktur danych specyficznych dla domeny można użyć wielu rozszerzeń debugowania. Aby uzyskać więcej informacji, zobacz Wyspecjalizowane rozszerzenia. Aby uzyskać informacje na temat ładowania rozszerzeń debugera, zobacz Ładowanie bibliotek DLL rozszerzeń debugera.
13. Dowiedz się więcej o powiązanych elementach wewnętrznych systemu Windows
W tej dokumentacji przyjęto założenie, że masz pewną wiedzę na temat podstawowych wewnętrznych systemów Windows. Aby dowiedzieć się więcej o elementach wewnętrznych systemu Windows, w tym o użyciu pamięci, kontekście, wątkach i procesach, możesz przejrzeć zasoby, takie jak Wewnętrzne systemy Windows pavel Yosifovich, Mark E. Russinovich, David A. Solomon i Alex Ionescu.
14. Przejrzyj dodatkowe zasoby debugowania
Inne zasoby obejmują następujące książki i filmy wideo:
- Debugowanie systemu Windows od kuchni: Praktyczne debugowanie i strategie śledzenia, autorstwa Tarik Soulami
- zaawansowane debugowanie systemu Windows przez Mario Hewardt i Daniel Pravat
- Defrag Tools seria wideo, od odcinka 13 do 29, wszystko o WinDbg
Dalsze kroki
Wybierz tryb debugowania, aby kontynuować:
Debugowanie w trybie jądra (w przypadku sterowników i składników systemu operacyjnego):
- Rozpocznij pracę z programem WinDbg (tryb jądra)
- Debugowanie uniwersalnych sterowników — laboratorium krok po kroku (tryb jądra z funkcją echo)
Debugowanie w trybie użytkownika (w przypadku aplikacji):
Dodatkowe wskazówki dotyczące konfiguracji: