符号路径下载:(第一次 .reload 时间比较长)
SRV*C:\Symbols* http://msdl.microsoft.com/download/symbols
// 我改的是D盘
一、先试一下
加载符号表后,输入!analyze -v
————————————————————————————————————————
————————————————————————————————————————————————————————
点击红色框中的蓝色的(或者直接看下面的 读 00 00 00 a2 的 时候出错)
————————————————————————————————————————————————————————
————————————————————————————————————————————————————————
然后看到一大波参数,懵逼
二、各个参数的详解
FAULTING_IP : 错误的IP(IP就是EIP,即出错的指令地址,指出发生错误时所执行的指令)
EXCEPTION_RECORD:异常记录(很重要的信息,记录崩溃的信息。可以看到异常地址,异常代码以及具体的异常原因“尝试读取地址00000000”。)
ExceptionAdddress: 异常地址; 中断地址
ExceptionCode: 异常码
AccessViolation:非法访问
ExceptionFlag:异常标志(1,表示不可继续的异常 0,表示可继续的异常)
DEFAULT_BUCKET_ID:指出错误的类型(比如NULL_POINTER_READ、DRIVER_FAULT、NULL_CLASS_PTR_DEREFERENCE )
BUCKET_ID:当前故障属于的特定类型的故障
读取地址 00 00 00 a2 (第二个参数)的时候出错。
二、STACK_TEXT(从后往前看)
栈文本信息:(STACK_TEXT: //反映了错误前堆栈中函数调用情况,)
最后一列容易理解,是模块+函数,那前面还有5列数字,表示什么呢?
第一列表示函数调用时的EBP,
第二列表示函数的返回地址,
后三列则是函数的参数
STACK_COMMAND: ~2s; .ecxr ; kb (kb 显示调用前三项栈 .excer 结合当前例外显示例外环境记录(寄存器))
FOLLOWUP_IP: //反汇编了发生错误指令的代码
EstLog!_output_l+98f [f:\dd\vctools\crt_bld\self_x86\crt\src\output.c @ 1643] /
/搜索了整个电脑,只有在安装VS的时候用,应该是写的戴拿调用所以output.c哪里出错了
0037ddb7 803800 cmp byte ptr [eax],0]
SYMBOL_STACK_INDEX: 0
SYMBOL_NAME: estlog!_output_l+98f
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: EstLog
IMAGE_NAME: EstLog.exe
DEBUG_FLR_IMAGE_TIMESTAMP: 5bd9773b
FAILURE_BUCKET_ID: NULL_CLASS_PTR_DEREFERENCE_c0000005_EstLog.exe!_output_l
BUCKET_ID: APPLICATION_FAULT_NULL_CLASS_PTR_DEREFERENCE_INVALID_POINTER_READ_estlog!_output_l+98f