一、Dump 分析完整流程7步准备环境准备对应系统版本的符号文件PDB配置符号路径微软公共符号 本地PDB。加载Dump使用 Windbg / x64dbg / Visual Studio 打开 Dump 文件。定位异常信息执行命令查看异常码、异常地址、异常类型。回溯调用栈显示崩溃时的函数调用链定位崩溃指令位置。定位崩溃模块查看异常地址属于哪个模块EXE、系统DLL、第三方DLL。分析上下文查看寄存器、内存数据、指针、字符串判断非法访问来源。根因归类区分是业务逻辑、内存越界、第三方库、驱动、系统异常。二、如何定位崩溃栈、异常码、模块、调用链1. 定位异常码常见异常码0xC0000005内存访问违例最常见0xC00000FD栈溢出0xC000001D非法指令0x80000003断点中断Windbg 命令!analyze -v自动输出异常信息2. 定位崩溃栈与调用链Windbg 命令k简单栈回溯kb带参数栈kp带完整函数名kv带帧指针信息看栈顶第一行就是崩溃发生的函数。3. 定位崩溃模块用lm命令列出所有加载模块。看异常地址落在哪个模块范围内自己的 EXE → 业务代码问题ntdll / kernel32 → 系统层问题第三方 DLL → 库或调用方式问题三、如何区分崩溃根因1. 业务逻辑崩溃崩溃地址在自己的EXE代码段。栈里全是业务函数无异常第三方调用。常见原因空指针、逻辑判断错误、资源未初始化。2. 内存越界/非法访问异常码固定0xC0000005。访问地址为0、0xcccccccc、0xdeadbeef 等非法地址。栈显示在读写内存时崩溃不是函数逻辑内部。常见野指针、数组越界、释放后使用、缓冲区溢出。3. 第三方库导致崩溃崩溃地址落在第三方DLL内。栈顶是库函数上层是自己的调用代码。常见原因参数传错句柄无效版本不匹配未按规范初始化/反初始化四、总结Dump分析流程配符号→加载→!analyze -v→看异常码→回溯调用栈→定位模块→区分是业务逻辑、内存越界还是第三方库问题0xC0000005基本是内存非法访问栈顶在自家EXE是业务问题在DLL是库或调用问题。