用windbg调试dump文件

来源:互联网 发布:用java写一个登陆界面 编辑:程序博客网 时间:2024/05/01 16:25

转自: http://blog.csdn.net/vah101/article/details/5916384


 对于windows程序员来说,程序运行时蓝屏是最郁闷的事情,如何找到蓝屏的原因则是首要解决的事情,好在微软提供了一系列的方法,为我们调试蓝屏提供了便利。

    首先要用的工具是windbg,可以到微软的官方网站下载

    http://msdl.microsoft.com/download/symbols/debuggers/dbg_x86_6.11.1.402.msi

    再需要下载并安装一个符号链接库,微软官方网站也有提供,这个要根据你所调试系统的版本来选择

    http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx#d

    也可以不下载这个符号库,直接让windbg自己去网上下符号链接信息。

 

    工具软件准备好了,就可以开始设置了,首先进入 “我的电脑”->“属性”->“高级”,选择“启动和故障恢复”选项卡,在“写入调试信息”一栏选择dump文件的转储方式,在“转储文件”中填入dump文件的保存路径。当出现蓝屏时,系统就会保存现场,将dump时的运行信息保存起来,以便我们用windbg来分析。有一条要注意,如果选择了完全内存转储,系统将会把内存中的所有信息都存进文件中,这会相当缓慢,所以你能看到蓝色屏幕上有一个跳动的数字,那就是保存的进度,必须耐心等待它保存到100%。

 

      当蓝屏再次发生的时候,我们手上就有了dump文件了,通常在windows目录下的MEMORY.DMP,或者在windows下的miniDump文件夹中,以*.dmp的形式保存。把.dmp文件拷贝出来,就可以用windbg来调试。

      首先,需要设置一下windbg的符号库,进入windbg的"File"->"Symbol File Path",在对话框的“symbol path”里面输入刚才下载的符号库的安装目录,最省心的方法是在这里填入SRV*c:/temp*http://msdl.microsoft.com/download/symbols就可以让windbg自动去下载所需要的符号信息。

      将这里设置完,就可以开始调试.dmp文件了,打开“File”->“Open Crase Dump”,选择一个.dmp文件,windbg就开始下载符号库并进行初步的分析,当出现

*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

Use !analyze -v to get detailed debugging information.

BugCheck 1000007F, {8, f772ffe0, 0, 0}

Probably caused by : bxnd52x.sys ( bxnd52x+365f )

Followup: MachineOwner
---------

就可以在下面的输入框中敲入

!analyze -v;r;kv;lmtn;.logclose;

回车后就可以看到结果,比如我这里看到

 

BUGCHECK_STR:  0x7f_8

CUSTOMER_CRASH_COUNT:  3

DEFAULT_BUCKET_ID:  DRIVER_FAULT_SERVER_MINIDUMP

CURRENT_IRQL:  2

LAST_CONTROL_TRANSFER:  from 00000000 to f759a65f

STACK_TEXT:  
f78dc000 00000000 00000000 00000000 00000000 bxnd52x+0x365f


STACK_COMMAND:  kb

FOLLOWUP_IP: 
bxnd52x+365f
f759a65f 53              push    ebx

SYMBOL_STACK_INDEX:  0

SYMBOL_NAME:  bxnd52x+365f

FOLLOWUP_NAME:  MachineOwner

MODULE_NAME: bxnd52x

IMAGE_NAME:  bxnd52x.sys

DEBUG_FLR_IMAGE_TIMESTAMP:  44a55446

FAILURE_BUCKET_ID:  0x7f_8_bxnd52x+365f

BUCKET_ID:  0x7f_8_bxnd52x+365f

Followup: MachineOwner
---------

  说明蓝屏可能是由于bxnd52x.sys驱动的问题造成的,上网百度了一下,这个 bxnd52x.sys是网卡驱动,下载了一个更高版本的驱动重新安装,蓝屏的问题就解决了。   


原创粉丝点击