Every blue screen writes a crash dump — a snapshot of exactly what the system was doing when it died. Most people never look at theirs. They photograph the stop code, search it online, and try fixes at random. There’s a better way: WinDbg, Microsoft’s free debugger, reads that dump and tells you which driver crashed, what it was doing, and often why. One command — !analyze -v — does in seconds what forums take hours to guess at.
This guide is the practical path: installing WinDbg the easy way, configuring symbols (the step everyone skips and then regrets), opening your first dump, running the analysis, and reading the output like a technician. You don’t need programming experience. You need about twenty minutes and a crashing laptop with dumps to examine. By the end, “which driver is doing this?” will be an answered question, not a research project.
Why this happens
- Nobody configures symbols: WinDbg without Microsoft’s symbol server shows raw memory addresses instead of function names, making output unreadable. This single setup step is what separates useful analysis from noise.
- Looking at the wrong dump: The latest minidump isn’t always the relevant one — if crashes have multiple causes, you need to analyze several dumps and look for the common thread.
- Minidumps disabled: Some “optimization” guides disable crash dumps to save disk space, leaving you with nothing to analyze when the crash comes.
- Misreading the named module: The driver WinDbg names is sometimes the victim, not the culprit — a corrupt driver crashes, but bad RAM corrupted it first. Context matters.
- Stopping at the stop code: The stop code alone is a category; the parameters, stack trace, and faulting module are the diagnosis. Most online advice never gets past the code.
- Outdated WinDbg: The ancient SDK version lacks the automated analysis quality of WinDbg Preview — use the modern tool.
- Analyzing on the crashing machine: You can analyze dumps on any Windows PC — copy them off an unstable laptop and debug in comfort.
How to fix it
Work through these in order — diagnose first, then act.
Fix 1: Install WinDbg Preview from the Microsoft Store
Get the right tool from the right source.
- Open the Microsoft Store, search for WinDbg Preview, and install it. It’s free and published by Microsoft.
- Launch it once to confirm it opens — you’ll see a dark-themed start page with recent files and settings.
- Don’t install the old SDK-based WinDbg unless you have a specific reason; Preview’s
!analyzeengine is better and the UI is far more usable. - If the Store itself won’t open on the crashing machine, copy the minidumps to a USB drive and analyze them on a different PC — dumps are portable.
Fix 2: Configure the symbol path (the critical step)
Without symbols, WinDbg output is hieroglyphics. Set this once.
- In WinDbg Preview, click Settings (gear icon) > Debugging settings.
- In the Symbol path field, enter:
srv*C:\Symbols*https://msdl.microsoft.com/download/symbols - The
C:\Symbolspart is a local cache — WinDbg downloads each symbol file once, then reuses it. Create the folder if it doesn’t exist. - Keep internet access available during your first analysis — that’s when the downloads happen. Subsequent analyses are fast and mostly offline.
Fix 3: Verify crash dumps are being created
Make sure the crashing machine is actually writing dumps.
- On the target laptop, press Windows + R, type
sysdm.cpl, go to Advanced > Startup and Recovery > Settings. - Under Write debugging information, select Small memory dump (256 KB) — the fastest to write and sufficient for driver identification.
- Confirm the dump path is
%SystemRoot%\Minidumpand that Automatically restart is unticked while you’re diagnosing (so you can read the screen too). Microsoft documents these startup and recovery settings on their support site . - Check that
C:\Windows\Minidump\actually contains.dmpfiles. If it’s empty despite crashes, a “debloater” may have disabled dumps — re-enable them here.
Fix 4: Open a dump and run the automated analysis
The core skill — one file, one command.
- In WinDbg Preview, click File > Open dump file (or Start debugging > Open dump file) and select the newest
.dmpfrom the Minidump folder. - Wait for the module load to finish — the command window shows progress. First load is slow while symbols download.
- In the command input at the bottom, type
!analyze -vand press Enter. - Read the output top-down: BUGCHECK_CODE and BUGCHECK_STR (the stop code), then MODULE_NAME / IMAGE_NAME (the faulting driver file), then FAILURE_BUCKET_ID. That driver name is your prime suspect.
Fix 5: Read the stack trace for context
The named driver isn’t always the guilty party — the stack tells the fuller story.
- In the
!analyze -voutput, scroll to the STACK_TEXT section. Read bottom-up: the bottom frames are oldest, the top frame is where execution died. - Look for patterns: a third-party driver calling into a Microsoft storage driver suggests the third-party driver passed bad data;
ntoskrnl.exeat the top with memory corruption below suggests RAM. - Run
lmvm <drivername>(e.g.,lmvm Netwtw10) to see the driver’s version, timestamp, and file path — an ancient timestamp on a driver is a strong update signal. - If the stack shows
memory_corruptionas the image name, suspect RAM before drivers — run MemTest86 rather than chasing driver updates.
Fix 6: Compare multiple dumps for the common thread
One dump is an anecdote; three dumps are data.
- Open each recent minidump and run
!analyze -von all of them. Note the IMAGE_NAME from each. - Same driver named every time: you’ve found your culprit — update, roll back, or remove it.
- Different drivers each time with
memory_corruptionpatterns: that’s RAM or a dying drive corrupting whatever happens to be loaded — test hardware. - Same stop code, different drivers, no corruption pattern: suspect a filter driver (antivirus, backup software) that’s corrupting other drivers’ operations — clean-boot to isolate it.
Fix 7: Use the key extension commands
A few more commands that professional debuggers reach for constantly.
!thread— shows the faulting thread’s details; useful when the crash involves a specific process.!irpon a stuck IRP address — invaluable for DRIVER_POWER_STATE_FAILURE (0x9F), showing exactly which driver never completed the power request..ecxr— displays the exception context record, showing the exact CPU state and instruction that faulted.!sysinfo machineid— confirms the machine details when analyzing dumps from someone else’s laptop. Our 0x9F troubleshooting guide puts!irpto work on a real power-state crash.
Closing
Reading dump files with WinDbg is the single highest-leverage troubleshooting skill a Windows user can learn: it converts every future blue screen from a mystery into a named suspect in about five minutes. The setup is the hard part — install Preview, set the symbol path, verify dumps exist — and after that it’s one command per crash. Make !analyze -v a habit, compare multiple dumps before concluding, and remember the golden rule: the named driver is the prime suspect, not the convicted culprit. Confirm with the stack, the timestamps, and the pattern across dumps. For applying what the dump tells you, our blue screen fix guide
turns the diagnosis into a repair.
