minni dump文件 异常捕获模块自动生成
全dump文件 任务管理器导出,动态调试使用.dump导出
未捕捉异常无法生成dump文件,导出中二次崩溃,程序主动调用abort终止进程都会导致dump文件未生成。
静态调试
打开dmp文件后导入pdb符号表,注意时间戳是否一致检查加载成功
动态调试
使用WinDbg打开程序,打开程序后再附加WinDbg
//栈溢出异常VS调试直接退出,调试时函数调用堆栈有问题时使用
PDB文件
程序模块符号表,需要严格匹配时间戳,pdb文件名称必须和模块名称一致。每次编译生成一次,导入后可以查看函数具体名称和行号。
基本流程
查看异常类型,查看异常的汇编指令及寄存器值,查看函数调用堆栈,对照源码分析,有时查看相关变量的值。
.ecxr 切换到异常线程
kn/kv/kp 查看当前线程的函数调用堆栈
~ns 切换到n号线程,~查看所有线程
g 跳过中断
lm vm 查看模块详细信息
.reload 强制加载pdb文件
.hh 打开帮助文档
.effmach x86 切换到32位上下文
IsBadReadPtr IsBadWritePtr已废弃,调试中断时g继续