【windows】crash原因定位初探
背景
在测试时经常会遇到crash崩溃的情况,或许抓dump和叫开发是常规的反应。但除此之外,我们可以尝试先自己定位下问题所在。
用到的工具:
windbg http://www.windbg.org/
前置条件
-
crash但是没有dump文件的情况:
-
方法一:调出任务管理器,找到崩溃进程,创建转储文件。
-
方法二:打开windbg,附加到崩溃进程,Input区域输入 .dump /m c:crash.dmp,就会生成标准的minidump。 输入 .dump /ma c:crash.dmp,生成的dump会包括完整的内存内容、句柄、未加载的模块、等等。
-
crash有dump文件的情况,此时就可以直接进行下一步。
windbg 分析
- 打开windbg,File->Open Crash Dump->选择目标文件加载。
- File->Symbole File Path,此处可以输入 "srv*c:mss*http://msdl.microsoft.com/download/symbols",然后在分析前就会自动下载对应的windows符号。当然,如果你有对应崩溃文件的pdb文件,也可以在这里输入路径。
- 输入.reload进行加载符号
- 输入!analyze -v,等待分析结果
- 查看结果,重点关注PROCESSNAME和MODULENAME。
更多命令可以直接在Input区域输入?进行查看。