Aan de slag met Windows-foutopsporing
In dit artikel wordt beschreven hoe u aan de slag gaat met foutopsporing voor Windows. Als u het foutopsporingsprogramma wilt gebruiken om een crashdump te 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
Zie WinDbg installerenvoor meer informatie over het installeren van WinDbg.
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
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 kan toegang krijgen 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.
Meer informatie over het gebruik van het foutopsporingsprogramma in de kernelmodus:
- Aan de slag met WinDbg (kernelmodus)
- Universele stuurprogramma's debuggen: stapsgewijs lab (kernelmodus echo)
- Stuurprogramma's voor foutopsporing: stapsgewijs lab (Sysvad-kernelmodus)
Meer informatie over het gebruik van het foutopsporingsprogramma 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 worden doel- en hostsystemen verbonden door 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:
- foutopsporing van KDNET-netwerkkernel automatisch instellen
- netwerkopsporing van een virtuele machine instellen - KDNET-
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 geen symbolen goed hebt geconfigureerd, 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. Gebruik de opdracht .hh in het foutopsporingsprogramma om nuttige informatie weer te geven over elke foutopsporingsopdracht. Voor meer informatie over beschikbare commando's, zie Naslaginformatie voor foutopsporingsprogramma's.
12. Gebruik foutopsporingsextensies voor specifieke technologieën
Er zijn meerdere extensies voor foutopsporing die kunnen worden gebruikt om domeinspecifieke gegevensstructuren te parseren. Zie Gespecialiseerde extensiesvoor meer informatie. Dll's voor foutopsporingsprogramma's laden wordt uitgelegd hoe u extensies voor foutopsporingsprogramma's laadt.
13. Meer informatie over gerelateerde Interne Windows-instellingen
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 bekijken, zoals Windows Internals door Pavel Yosifovich, Mark E. Russinovich, David A. Salomon en Alex Ionescu.
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
Zie ook
- Aan de slag met WinDbg (kernelmodus)
- Aan de slag met WinDbg (gebruikersmodus)
- 32-bits of 64-bits hulpprogramma's voor foutopsporing kiezen
- foutopsporingsomgevingen
- foutopsporing instellen (kernelmodus en gebruikersmodus)
- Debuggen van universele stuurprogramma's - stapsgewijze lab (echo kernel mode)
- Stuurprogramma's voor foutopsporing - stapsgewijs lab (Sysvad-kernelmodus)