Performance Insights
Windows · BSOD and application crashes

Find the crash dump, set up symbols and read !analyze -v

Find a Windows crash dump, load it in WinDbg with Microsoft symbols, and read !analyze -v: bugcheck code, faulting module, stack. Kernel BSOD dumps and application dumps.

Published 2026-10-20 by PerformanceInsights.ai

Short answer: install WinDbg (winget install Microsoft.WinDbg), open the .dmp file, run .symfix and .reload so it loads Microsoft's public symbols, then run !analyze -v. Read the bugcheck code (or exception code), MODULE_NAME / IMAGE_NAME, and the STACK_TEXT. The module named there is the first suspect, not always the culprit.

1. Find the dump

Kind of crashDefault location
Blue screen, small memory dump (minidump)%SystemRoot%\Minidump\*.dmp
Blue screen, kernel / automatic / complete memory dump%SystemRoot%\MEMORY.DMP
Live kernel report (driver timeout, Windows kept running)%SystemRoot%\LiveKernelReports\
Application crash, only if Windows Error Reporting LocalDumps is enabled%LOCALAPPDATA%\CrashDumps unless DumpFolder is set

Which kernel dump Windows writes is set under System Properties → Advanced → Startup and Recovery. Application dumps are off by default; the registry key is HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps (DumpType 1 = minidump, 2 = full). Our open-source Set-WerLocalDumps.ps1 sets it up for you.

Copy the file somewhere else before you open it. A minidump is small (hundreds of KB). A full kernel dump can be as big as the machine's RAM.

2. Install WinDbg and load symbols

Without symbols, every stack frame is an offset into a module and !analyze guesses. Point the debugger at Microsoft's public symbol server, and add a local cache:

.sympath srv*C:\Symbols*https://msdl.microsoft.com/download/symbols
.reload

.symfix C:\Symbols does the same in one command. For your own application or driver, add the folder holding its PDB files to the path, built from the same source as the crashing binary.

3. Run !analyze -v and read it

0: kd> !analyze -v
DRIVER_IRQL_NOT_LESS_OR_EQUAL (d1)
Arguments:
Arg1: fffff808add27150, memory referenced
Arg2: 0000000000000002, IRQL
Arg3: 0000000000000000, value 0 = read operation, 1 = write operation
Arg4: fffff808adc386a6, address which referenced memory
...
MODULE_NAME:  exampledrv
IMAGE_NAME:   exampledrv.sys
STACK_TEXT: ...

For an application crash, the exception code replaces the bugcheck: c0000005 is an access violation, c0000409 a stack buffer overrun (fail-fast), c0000374 heap corruption.

4. Commands for the next step

CommandWhat it shows
kb / kvThe stack with arguments (kv adds trap frames).
.ecxrUser-mode dumps: switch to the exception context, then k again.
lmvm <module>The module's version, timestamp and path. That's how you find out the driver is three years old.
!threadThe current thread, its IRPs and wait state.
dx KiBugCheckDriverThe driver Windows named on the blue screen, when it identified one.
!irql, !pool <addr>, !pte <addr>IRQL at the crash, and what a bad address points into.

Microsoft's reference: Analyzing a kernel-mode dump file with WinDbg and !analyze.

Common mistakes

Rather not read the dump yourself?

Upload it to DumpTriage. It runs the debugger, reads the output and sends back the faulting module, the stack and a plain-language root cause. Cases the automated passes can't settle go to an engineer. Free during the pilot.

Create an account