崩溃分析:
1.打开dump文件或挂载到崩溃残留线程;
2.设置相同版本的pdb、源码路径;
Symbol path设置为:srv*F:\symbols*http://msdl.microsoft.com/download/symbols;C:\myPath
3.详细分析;
自动分析指令: !analyze -v (板蓝根包治百病)
打印所有线程信息: ~*kb
定位异常线程: UnhandledExceptionFilter
查看问题线程: ~3kb (3为问题线程号)
查看_EXCEPTION_POINTERS: dd 0Xxxxxxxxx (0Xxxxxxxxx为UnhandledExceptionFilter的第一个参数)
重建堆栈: .cxr 0Xxxxxxxxx (0Xxxxxxxxx为上一步中的第二个参数)
查看异常记录信息: .exr 0Xxxxxxxxx (0Xxxxxxxxx为上上一步中的第一个参数)
打印异常调用堆栈信息: kv
EXCE20PTION_ACCESS_VIOLATION | 0xC0000005 | 程序企图读写一个不可访问的地址时引发的异常。例如企图读取0地址处的内存。 |
EXCEPTION_ARRAY_BOUNDS_EXCEEDED | 0xC000008C | 数组访问越界时引发的异常。 |
EXCEPTION_BREAKPOINT | 0x80000003 | 触发断点时引发的异常。 |
EXCEPTION_DATATYPE_MISALIGNMENT | 0x80000002 | 程序读取一个未经对齐的数据时引发的异常。 |
EXCEPTION_FLT_DENORMAL_OPERAND | 0xC000008D | 如果浮点数操作的操作数是非正常的,则引发该异常。所谓非正常,即它的值太小以至于不能用标准格式表示出来。 |
EXCEPTION_FLT_DIVIDE_BY_ZERO | 0xC000008E | 浮点数除法的除数是0时引发该异常。 |
EXCEPTION_FLT_INEXACT_RESULT | 0xC000008F | 浮点数操作的结果不能精确表示成小数时引发该异常。 |
EXCEPTION_FLT_INVALID_OPERATION | 0xC0000090 | 该异常表示不包括在这个表内的其它浮点数异常。 |
EXCEPTION_FLT_OVERFLOW | 0xC0000091 | 浮点数的指数超过所能表示的最大值时引发该异常。 |
EXCEPTION_FLT_STACK_CHECK | 0xC0000092 | 进行浮点数运算时栈发生溢出或下溢时引发该异常。 |
EXCEPTION_FLT_UNDERFLOW | 0xC0000093 | 浮点数的指数小于所能表示的最小值时引发该异常。 |
EXCEPTION_ILLEGAL_INSTRUCTION | 0xC000001D | 程序企图执行一个无效的指令时引发该异常。 |
EXCEPTION_IN_PAGE_ERROR | 0xC0000006 | 程序要访问的内存页不在物理内存中时引发的异常。 |
EXCEPTION_INT_DIVIDE_BY_ZERO | 0xC0000094 | 整数除法的除数是0时引发该异常。 |
EXCEPTION_INT_OVERFLOW | 0xC0000095 | 整数操作的结果溢出时引发该异常。 |
EXCEPTION_INVALID_DISPOSITION | 0xC0000026 | 异常处理器返回一个无效的处理的时引发该异常。 |
EXCEPTION_NONCONTINUABLE_EXCEPTION | 0xC0000025 | 发生一个不可继续执行的异常时,如果程序继续执行,则会引发该异常。 |
EXCEPTION_PRIV_INSTRUCTION | 0xC0000096 | 程序企图执行一条当前CPU模式不允许的指令时引发该异常。 |
EXCEPTION_SINGLE_STEP | 0x80000004 | 标志寄存器的TF位为1时,每执行一条指令就会引发该异常。主要用于单步调试。 |
EXCEPTION_STACK_OVERFLOW | 0xC00000FD | 栈溢出时引发该异常。 |
补充:
0x80000003 :内存不可读或数据溢出的程序性中断,可能是一些库没有注册,也可能是内存坏了,软件协调失灵等。
该表参考于:https://blog.csdn.net/hgy413/article/details/7590052