Windbg分析DMP文件

时间:2022-07-19 04:06:15

1、提取Dump格式文件

  有两种方式:

  第一种,程序崩溃时,启动任务管理器,选择崩溃的*.exe进程,右键选择创建转储文件,通过 开始—运行—输入 %temp% --确定--在打开Temp窗口中即可找到*.dmp文件。

  第二种,通过windbg生成dump 文件。

  步骤:
         1) 打开Windbg并将之Attach 到crash的程序进程
         2) 输入产生dump 文件的命令
          Windb*生dump 文件的命令是 .dump ,可以选择不同的参数来生成不同类型的dump文件。
          选项(1): /m
    命令行示例:.dump /m C:\dumps\*.dmp
    注解: 缺省选项,生成标准的minidump, 转储文件通常较小,便于在网络上通过邮件或其他方式传输。 这种文件的信息量较少,

       只包含系统信息、加载的模块(DLL)信息、 进程信息和线程信息。
    选项(2): /ma
    命令行示例:.dump /ma C:\dumps\*.dmp
    注解: 带有尽量多选项的minidump(包括完整的内存内容、句柄、未加载的模块,等等),文件很大(第一种方法产生的DMP文件

       大小与此相同),但如果条件允许(本机调试,局域网环境), 推荐使用这中dump。
    选项(3):/mFhutwd
    命令行示例:.dump /mFhutwd C:\dumps\*.dmp
    注解:带有数据段、非共享的读/写内存页和其他有用的信息的minidump。包含了通过minidump能够得到的最多的信息。是一种折中方案。

2、  打开Dump格式文件

  打开WinDbg,通过菜单[File] à [Open Crash dump] 选择dump文件打开,也可通过CMD打开Dos命令窗口,切换到WinDbg所在目录,利用命令:

  WinDbg –z “D:/Lines2009-7-25-22-20-33-900.dmp”,-z表示路径。

3、  分析Dump格式文件

  通过WinDbg菜单[File] -》 [Symbol File path]、[Source File Path] 、[Image File path]分别设置PDB文件路径、源代码路径和可执行文件的路径。

  基本调试命令:

    r ------可以显示系统崩溃时的寄存器和最后的命令状态;

    dd----显示当前内存地址;

    dd参数--显示参数处的内存;

    u---- 显示反汇编的指令;

    ! analyze -v -------显示分析的详细信息;

    kb---显示call stack内容

    kv.bugcheck----显示出错的代码