Aflevering
Defragmentatie Tools #167 - Foutopsporing in gebruikersmodus Crash Dumps Redux
In deze aflevering van Defrag Tools gebruiken Andrew Richards en Chad Beeder Debugging Tools for Windows (WinDbg) om de hoofdoorzaak te bepalen van verschillende toepassingscrashes die zijn opgetreden op de computer van Andrew. We gebruiken Sysinternals ProcDump om de dumps vast te leggen.
Tijdens foutopsporing maken we een trip naar het configureren van kleuren voor gecomprimeerde en versleutelde bestanden in Windows Verkenner en gebruiken we Sysinternals Process Monitor om te bepalen waarom het foutopsporingsprogramma een toegang geweigerd kreeg bij het laden van de PDE-foutopsporingsprogramma-extensie.
We hebben een soortgelijk onderzoek uitgevoerd in deze twee afleveringen:
- Defragmentatiehulpprogramma's #135 - Foutopsporing in de gebruikersmodus crashdumps deel 1
- Defragmentatiehulpprogramma's #136 - Foutopsporing in de gebruikersmodus crashdumps deel 2
In deze aflevering wordt beschreven hoe u de hulpprogramma's voor foutopsporing voor Windows installeert:
Haal de Sysinternals-hulpprogramma's op uit http://www.sysinternals.com. We gebruiken:
Download de PDE-foutopsporingsprogramma-extensie uit de Defragmentatie Tools OneDrive
Haal uw symboolpad op naar de openbare Symboolserver van Microsoft:
- Via omgevingsvariabele
setx /m _NT_SYMBOL_PATH SRV*C:\My\Sym*https://msdl.microsoft.com/download/symbols - In het foutopsporingsprogramma
.sympath SRV*C:\My\Sym*https://msdl.microsoft.com/download/symbols
Als u dumps van crashes op uw eigen computer wilt verzamelen, installeert u ProcDump als het foutopsporingsprogramma Postmortem (AeDebugger):
md c:\dumps
procdump.exe -ma -i c:\dumps
Op elke dump (gebruiker of kernel) kunt u geautomatiseerde analyse uitvoeren om het probleem te bekijken:
!analyseren -v
Cheatsheet voor foutopsporing
- c0000005 is een toegangsfout - gebruik .ecxr & k
- c000027b is een Stowed Exception (Store-apps) - gebruik !pde.dse
- e0434352 is een CLR-uitzondering - gebruik !sos.pe
- e0697282 is een C++-uitzondering - gebruik .ecxr & k
- 80000003 is een onderbrekingspunt - gebruik !analyze -v
- Wanneer u een decimaal getal typt, typt u het voorvoegsel '0n'
- Wanneer u een hexadecimaal getal typt, typt u het voorvoegsel '0x' (het standaardvoorvoegsel)
Algemene opdrachten voor foutopsporingsprogramma's
.exr -1
- De uitzonderingscode en de uitzonderingsparameters weergeven
- Getal dat lijkt op C0xxxxxx en 80xxxxxx zijn HRESULT's(foutcodes)
- Getal dat lijkt op 7FFFxxxxxxxxxx zijn meestal codeadressen (assemblyer)
!adres
- De adresgegevens weergeven - Commited/Reserved/Free, Image/Mapped/Private
- Wordt gebruikt om te bepalen of een getal code of gegevens is.
Ln
- Lijst dichtstbijzijnde adres
- Geeft het symbool weer op of in de buurt van het adres
- Wordt gebruikt om te bepalen of een getal code of gegevens is.
.ecxr
- Wijzig de foutopsporingscontext in het punt van de uitzondering (in plaats van in de context van de Windows Foutrapportage)
r
- Bekijk de registers in de huidige context. (.ecxr produceert dezelfde uitvoer)
k
- De aanroepstack weergeven
lmvm
- Geladen module uitgebreid weergeven met een masker
- Bekijk de details van een module, waaronder map, tijdstempel, beschrijving, copyright, product/bestandsversie
| (Verticale staaf of sluisteken)
- Het pad van het uitvoerbare bestand weergeven (bijvoorbeeld c:\windows\notepad.exe)
!ext.error
- De beschrijving van een foutcode ophalen. Het beste bij het beschrijven van systeemfoutcodes.
!pde.err
- De beschrijving van een foutcode ophalen. Goed in het beschrijven van HRESULTs (80xxxxxx en C0xxxxxx)
!pde.dpx
- Scrape de huidige thread voor bewijs (symbolen, structuren, tekenreeksen, enzovoort)
.Formaten
- Geeft het getal in verschillende notaties weer.
- Eenvoudige manier om uit te werken als een getal eigenlijk ASCII-tekst of een datum/tijd is
!sos.pe
- Een CLR-uitzondering weergeven.
- Als er een interne uitzondering is, klikt u op de koppeling om deze weer te geven.
.cordll -u & .cordll -l
- Als SOS niet is geladen, probeert u het laden en laden van de CLR-ondersteuning uit te voeren.
!peb
- Bekijk het procesomgevingsblok (modules, opdrachtregel, omgevingsvariabelen, enzovoort)
!teb
- Bekijk het omgevingsblok van de huidige thread (stackbereik, laatste foutcode, laatste statuscode, enzovoort)
!Gle
- Laatste fout ophalen
- De laatste foutcode en laatste statuscode van de huidige thread weergeven
.Cls
- Wis het scherm.
.herladen
- Forceer opnieuw laden (downloaden) van symbolen voor de modules op de huidige stack.
.reload /f
- Forceer een volledige herlaading (download) van symbolen voor de modules op de huidige stack.
Toepassingen opslaan
Als u de momenteel geïnstalleerde Store-toepassingen en hun versie wilt weergeven, gebruikt u:
Register-editor (regedit.exe)
- HKEY_CURRENT_USER\SOFTWARE\Classes\ActivatableClasses\Package
Powershell
In deze aflevering van Defrag Tools gebruiken Andrew Richards en Chad Beeder Debugging Tools for Windows (WinDbg) om de hoofdoorzaak te bepalen van verschillende toepassingscrashes die zijn opgetreden op de computer van Andrew. We gebruiken Sysinternals ProcDump om de dumps vast te leggen.
Tijdens foutopsporing maken we een trip naar het configureren van kleuren voor gecomprimeerde en versleutelde bestanden in Windows Verkenner en gebruiken we Sysinternals Process Monitor om te bepalen waarom het foutopsporingsprogramma een toegang geweigerd kreeg bij het laden van de PDE-foutopsporingsprogramma-extensie.
We hebben een soortgelijk onderzoek uitgevoerd in deze twee afleveringen:
- Defragmentatiehulpprogramma's #135 - Foutopsporing in de gebruikersmodus crashdumps deel 1
- Defragmentatiehulpprogramma's #136 - Foutopsporing in de gebruikersmodus crashdumps deel 2
In deze aflevering wordt beschreven hoe u de hulpprogramma's voor foutopsporing voor Windows installeert:
Haal de Sysinternals-hulpprogramma's op uit http://www.sysinternals.com. We gebruiken:
Download de PDE-foutopsporingsprogramma-extensie uit de Defragmentatie Tools OneDrive
Haal uw symboolpad op naar de openbare Symboolserver van Microsoft:
- Via omgevingsvariabele
setx /m _NT_SYMBOL_PATH SRV*C:\My\Sym*https://msdl.microsoft.com/download/symbols - In het foutopsporingsprogramma
.sympath SRV*C:\My\Sym*https://msdl.microsoft.com/download/symbols
Als u dumps van crashes op uw eigen computer wilt verzamelen, installeert u ProcDump als het foutopsporingsprogramma Postmortem (AeDebugger):
md c:\dumps
procdump.exe -ma -i c:\dumps
Op elke dump (gebruiker of kernel) kunt u geautomatiseerde analyse uitvoeren om het probleem te bekijken:
!analyseren -v
Cheatsheet voor foutopsporing
- c0000005 is een toegangsfout - gebruik .ecxr & k
- c000027b is een Stowed Exception (Store-apps) - gebruik !pde.dse
- e0434352 is een CLR-uitzondering - gebruik !sos.pe
- e0697282 is een C++-uitzondering - gebruik .ecxr & k
- 80000003 is een onderbrekingspunt - gebruik !analyze -v
- Wanneer u een decimaal getal typt, typt u het voorvoegsel '0n'
- Wanneer u een hexadecimaal getal typt, typt u het voorvoegsel '0x' (het standaardvoorvoegsel)
Algemene opdrachten voor foutopsporingsprogramma's
.exr -1
- De uitzonderingscode en de uitzonderingsparameters weergeven
- Getal dat lijkt op C0xxxxxx en 80xxxxxx zijn HRESULT's(foutcodes)
- Getal dat lijkt op 7FFFxxxxxxxxxx zijn meestal codeadressen (assemblyer)
!adres
- De adresgegevens weergeven - Commited/Reserved/Free, Image/Mapped/Private
- Wordt gebruikt om te bepalen of een getal code of gegevens is.
Ln
- Lijst dichtstbijzijnde adres
- Geeft het symbool weer op of in de buurt van het adres
- Wordt gebruikt om te bepalen of een getal code of gegevens is.
.ecxr
- Wijzig de foutopsporingscontext in het punt van de uitzondering (in plaats van in de context van de Windows Foutrapportage)
r
- Bekijk de registers in de huidige context. (.ecxr produceert dezelfde uitvoer)
k
- De aanroepstack weergeven
lmvm
- Geladen module uitgebreid weergeven met een masker
- Bekijk de details van een module, waaronder map, tijdstempel, beschrijving, copyright, product/bestandsversie
| (Verticale staaf of sluisteken)
- Het pad van het uitvoerbare bestand weergeven (bijvoorbeeld c:\windows\notepad.exe)
!ext.error
- De beschrijving van een foutcode ophalen. Het beste bij het beschrijven van systeemfoutcodes.
!pde.err
- De beschrijving van een foutcode ophalen. Goed in het beschrijven van HRESULTs (80xxxxxx en C0xxxxxx)
!pde.dpx
- Scrape de huidige thread voor bewijs (symbolen, structuren, tekenreeksen, enzovoort)
.Formaten
- Geeft het getal in verschillende notaties weer.
- Eenvoudige manier om uit te werken als een getal eigenlijk ASCII-tekst of een datum/tijd is
!sos.pe
- Een CLR-uitzondering weergeven.
- Als er een interne uitzondering is, klikt u op de koppeling om deze weer te geven.
.cordll -u & .cordll -l
- Als SOS niet is geladen, probeert u het laden en laden van de CLR-ondersteuning uit te voeren.
!peb
- Bekijk het procesomgevingsblok (modules, opdrachtregel, omgevingsvariabelen, enzovoort)
!teb
- Bekijk het omgevingsblok van de huidige thread (stackbereik, laatste foutcode, laatste statuscode, enzovoort)
!Gle
- Laatste fout ophalen
- De laatste foutcode en laatste statuscode van de huidige thread weergeven
.Cls
- Wis het scherm.
.herladen
- Forceer opnieuw laden (downloaden) van symbolen voor de modules op de huidige stack.
.reload /f
- Forceer een volledige herlaading (download) van symbolen voor de modules op de huidige stack.
Toepassingen opslaan
Als u de momenteel geïnstalleerde Store-toepassingen en hun versie wilt weergeven, gebruikt u:
Register-editor (regedit.exe)
- HKEY_CURRENT_USER\SOFTWARE\Classes\ActivatableClasses\Package
Powershell