Delen via


Aan de slag met Windows-foutopsporing

In dit artikel wordt uitgelegd hoe u aan de slag gaat met Windows-foutopsporing met behulp van WinDbg en andere hulpprogramma's voor foutopsporing. U leert het volgende:

  • Installeer het foutopsporingsprogramma en stel host- en doelsystemen in
  • Uw foutopsporingsomgeving configureren
  • Essentiële foutopsporingstechnieken voor kernelmodus- en gebruikersmodusscenario's beheersen

Notitie: Als u in plaats daarvan een crashdump wilt analyseren, raadpleegt u Crashdumpbestanden analyseren met behulp van WinDbg.

Voer de volgende stappen uit om aan de slag te gaan met Windows-foutopsporing.

1. Installeer het Windows-foutopsporingsprogramma

Installeer WinDbg om te beginnen met het opsporen van fouten in Windows-toepassingen en -stuurprogramma's. Zie WinDbg installeren voor gedetailleerde installatiestappen.

2. Identificeer de host- en doelsystemen

Twee afzonderlijke computersystemen worden doorgaans gebruikt voor foutopsporing, omdat de uitvoering van instructies op de processor doorgaans wordt onderbroken tijdens het proces. Het foutopsporingsprogramma wordt uitgevoerd op het host systeem en de code die u wilt opsporen, wordt uitgevoerd op het doelsysteem.

Host <--------------------------------------------------> Target

Schermopname van een diagram met een dubbele pijl waarmee host- en doelopsporingssystemen worden verbonden.

In sommige situaties is het mogelijk om een virtuele machine als het tweede systeem te gebruiken. Een virtuele pc kan bijvoorbeeld worden uitgevoerd op dezelfde pc als de code die u nodig hebt om fouten op te sporen. Als uw code echter communiceert met hardware op laag niveau, is het gebruik van een virtuele pc mogelijk niet de beste methode. Zie Netwerkopsporing van een virtuele machine instellen - KDNET-voor meer informatie.

3. Bepaal het foutopsporingsprogrammatype: kernelmodus of gebruikersmodus

Vervolgens moet u bepalen of u kernelmodus of foutopsporing in de gebruikersmodus wilt gebruiken.

  • Het besturingssysteem en de bevoegde programma's worden uitgevoerd in kernelmodus. Code in de kernelmodus heeft machtigingen voor toegang tot een deel van het systeem en is niet beperkt, zoals code in de gebruikersmodus. Code in de kernelmodus heeft toegang tot elk onderdeel van elk ander proces dat wordt uitgevoerd in de gebruikersmodus of kernelmodus. Veel van de kernfunctionaliteit van het besturingssysteem en veel hardwareapparaatstuurprogramma's worden uitgevoerd in de kernelmodus.

  • Toepassingen en subsystemen op de computer worden uitgevoerd in gebruikersmodus. Processen die in de gebruikersmodus worden uitgevoerd, doen dit binnen hun eigen virtuele adresruimten. Ze kunnen geen directe toegang krijgen tot veel onderdelen van het systeem, waaronder systeemhardware, geheugen dat niet is toegewezen voor hun gebruik en andere delen van het systeem die de systeemintegriteit kunnen beschadigen. Processen die in de gebruikersmodus worden uitgevoerd, worden effectief geïsoleerd van het systeem en van andere processen in de gebruikersmodus, zodat ze deze resources niet kunnen verstoren.

Als u fouten in een stuurprogramma wilt opsporen, moet u bepalen of het stuurprogramma een kernelmodusstuurprogramma of een stuurprogramma voor de gebruikersmodus is. Stuurprogramma's voor Windows Driver Model (WDM) en Kernel-Mode Driver Framework (KMDF) zijn beide stuurprogramma's in de kernelmodus. Zoals de naam al aangeeft, zijn stuurprogramma's van het User-Mode-stuurprogrammaframework (UMDF) gebruikersmodus-stuurprogramma's.

Voor sommige problemen kan het lastig zijn om te bepalen in welke modus de code wordt uitgevoerd. In dat geval moet u mogelijk één modus kiezen en zien welke informatie beschikbaar is in die modus. Sommige problemen vereisen het gebruik van het foutopsporingsprogramma in zowel de gebruikersmodus als de kernelmodus.

Afhankelijk van de modus waarin u fouten opssport, moet u de foutopsporingsprogramma's mogelijk op verschillende manieren configureren en gebruiken. Sommige foutopsporingsopdrachten werken op dezelfde manier in beide modi en sommige opdrachten werken anders.

Volgende stappen voor foutopsporing in kernelmodus

Volgende stappen voor foutopsporing in de gebruikersmodus

4. Kies uw foutopsporingsprogramma-omgeving

Het WinDbg-foutopsporingsprogramma werkt in de meeste situaties goed, maar er zijn situaties waarin u mogelijk een ander foutopsporingsprogramma wilt gebruiken, zoals consoledebuggers voor automatisering of Visual Studio. Zie Foutopsporingsomgevingenvoor meer informatie.

5. Bepalen hoe het doel en de host moeten worden verbonden

Normaal gesproken verbindt u doel- en hostsystemen met behulp van een Ethernet-netwerk. Als u bezig bent met het vroege opstarten, of als u geen Ethernet-verbinding op een apparaat hebt, zijn er andere netwerkopties beschikbaar. Zie de volgende artikelen voor meer informatie:

6. Kies 32-bits of 64-bits hulpprogramma's voor foutopsporing

Of u nu een 32-bits of 64-bits foutopsporingsprogramma nodig hebt, is afhankelijk van de versie van Windows die wordt uitgevoerd op de doel- en hostsystemen en of u foutopsporing uitvoert in 32-bits of 64-bits code. Zie 32-bits of 64-bits hulpprogramma's voor foutopsporing kiezenvoor meer informatie.

7. Symbolen configureren

Als u alle geavanceerde functionaliteit wilt gebruiken die WinDbg biedt, moet u de juiste symbolen laden. Als u symbolen niet goed configureert, ontvangt u berichten die aangeven dat symbolen niet beschikbaar zijn wanneer u probeert functionaliteit te gebruiken die afhankelijk is van symbolen. Zie Symbolen voor Windows-foutopsporingvoor meer informatie.

8. Broncode configureren

Als u fouten in uw eigen broncode wilt opsporen, moet u een pad naar uw broncode configureren. Zie bronpadvoor meer informatie.

9. Vertrouwd raken met het gebruik van een debugger

In de sectie Foutopsporingsprogramma van de documentatie wordt de werking van het foutopsporingsprogramma voor verschillende taken beschreven. Bijvoorbeeld, het bewaren van een logboekbestand in WinDbg beschrijft hoe WinDbg een logboekbestand kan schrijven waarmee de foutopsporingssessie wordt vastgelegd.

10. Vertrouwd raken met foutopsporingstechnieken

Standaard foutopsporingstechnieken zijn van toepassing op de meeste foutopsporingsscenario's. Voorbeelden zijn het instellen van onderbrekingspunten, het inspecteren van de aanroepstack en het opsporen van een geheugenlek. Gespecialiseerde foutopsporingstechnieken van toepassing op bepaalde technologieën of typen code. Voorbeelden hiervan zijn Plug en Play-foutopsporing, KMDF-foutopsporing en RPC-foutopsporing.

11. Gebruik de referentiecommando's van de debugger

U kunt verschillende foutopsporingsopdrachten gebruiken terwijl u in het foutopsporingsprogramma werkt. Als u hulp wilt krijgen bij een opdracht tijdens foutopsporing, gebruikt u de .hh opdracht gevolgd door de opdrachtnaam.

Voorbeelden:

.hh bp # Get help on breakpoint commands
.hh k # Get help on call stack commands

Voor een volledige lijst met beschikbare opdrachten, zie de debuggerreferentie.

12. Gebruik foutopsporingsextensies voor specifieke technologieën

U kunt meerdere extensies voor foutopsporing gebruiken om domeinspecifieke gegevensstructuren te parseren. Zie Gespecialiseerde extensiesvoor meer informatie. Zie Het laden van foutopsporingsprogramma-extensies DLLs voor informatie over hoe extensies voor foutopsporing worden geladen.

In deze documentatie wordt ervan uitgegaan dat u enige kennis hebt over interne Windows-kernen. Voor meer informatie over Interne windows-functies, waaronder geheugengebruik, context, threads en processen, kunt u bronnen zoals Windows Internals van Pavel Yosifovich, Mark E. Russinovich, David A. Salomon en Alex Ionescu bekijken.

14. Aanvullende foutopsporingsbronnen controleren

Andere bronnen zijn de volgende boeken en video's:

  • Binnen Windows-foutopsporing: Praktische foutopsporing en traceringsstrategieën door Tarik Soulami
  • Geavanceerde Windows-foutopsporing door Mario Hewardt en Daniel Pravat
  • Defrag Tools videoserie, afleveringen 13 tot en met 29, allemaal over WinDbg

Volgende stappen

Kies de foutopsporingsmodus om door te gaan:

Foutopsporing in kernelmodus (voor stuurprogramma's en onderdelen van het besturingssysteem):

Foutopsporing in de gebruikersmodus (voor toepassingen):

Aanvullende richtlijnen voor het instellen: