Wat zou je voor informatie willen zien? NT4, Win2k en Windows XP dumpte alle informatie inclusief CPU-registers, maar ik geloof niet dat iemand daar ooit wat aan heeft gehad.
Op het moment dat er een bugcheck plaatsvindt heeft Windows de context die de meeste mensen zoeken niet. Het weet niet per se welke driver of welke hardware het probleem veroorzaakte dus het kan ook niet gaan wijzen. De meeste BSOD's die ik in de kernel zelf gehad heb, bleken later toch driverproblemen te zijn, en een of twee Intel-netwerkdriverbluescreens bleken veroorzaakt te zijn door een bug in een stuk software dat ik gebruikte om netwerkstatistieken te verzamelen. Als Windows in die gevallen gaat wijzen naar "ik denk dat dit hem is", heb je daar welgeteld helemaal niks aan.
Wil je het probleem zelf oplossen (aannemende dat het probleem dus vaker voorkomt) dan kun je de minidump door een debugger als windbg gooien, WhoCrashed draaien die dat automatisch doet of via de command line kd gebruiken om de nodige data te extraheren. Dit is bij consistente crashes makkelijker als je een full memory dump aanzet (in plaats van de minidump die standaard gemaakt wordt). Ik doe dit meestal bij consistente bluescreens en ik kan je vertellen dat de een of de drie keer bij mij de stack kapot is en er een stuk willekeurig geheugen werd uitgevoerd, daar kun je helemaal niks mee. Dat kan slecht RAM, een instabiele overclock, een slecht moederbord, een slechte PSU, een schrijfcorruptie of een softwarefout in elke mogelijke driver zijn.
Een BSOD is een last resort. Tenzij je wat kennis hebt van hoe Windows-kernel kún je er helemaal niks mee. Er wordt voor zover ik weet nog altijd een STOP-code weergegeven die je kunt opzoeken op MSDN (in het voorbeeld
SESSION1_INITIALIZATION_FAILED, een handmatige bugcheck die verder alleen de response code van een interne API logt) maar als je het daarmee niet redt, is de kans dat je het zelf op kunt lossen gewoon heel klein. Daarom stuurt Windows dit soort dingen naar MS, zodat ze bij veel soortgelijke crashes iemand de fout met een debugger kunnen laten nalopen en een update kunnen verspreiden (of een fabrikant vragen om hun driver te fixen).
Zie ook de kernel panics bij Linux: je krijgt een stack trace, een registerdump, een geheugendump en soms zelfs een gedeeltelijke decompilatie van de laatste instructie die gefaald is. Heb ik daar wat aan als eindgebruiker? Nee, niet echt eigenlijk. Ik kan Googlen naar de driver waar de bug in leek te zitten (wat lang niet altijd de driver met de bug is, zoals wanneer de heap kapot is) en ik kan met de assembly misschien proberen te redeneren welke regel code het geweest moest zijn, maar ik ben geen kerneldeveloper, ik heb geen toegang tot de binary blobs die sommige hardware nodig heeft en het zou mijn taak als gebruiker niet moeten zijn om dit op te lossen, hooguit om het te rapporteren.
[Reactie gewijzigd door GertMenkel op 22 juli 2024 15:25]