Windbg是windows平台上的一款相当强大的调试工具,可以从msdn网站下载得到,最新版本包含在windows sdk中,默认会被安装在C:\Program Files\Debugging Tools for Windows 目录中,可以直接把这个目录打包复制到其它机器上使用。

Windbug常用命令:

  • !analyze -v    自动分析dump
  • Kv    查看栈回溯
  • .ecxr    显示当前异常上下文
  • .cxr    切换异常帧上下文
  • .exr    显示异常信息
  • .frame    设置当前栈帧
  • Dv    显示当前栈帧局部变量
  • Dd    显示内存中的数据
  • R    查看寄存器
  • Lmvm    查看模块详细信息
  • r    可以显示系统崩溃时的寄存器,和最后的命令状态
  • dd    显示当前内存地址,dd 参数:显示参数处的内存
  • u    可以显示反汇编的指令
  • kb    显示call stack 内容
  • kv.bugcheck    可以显示出错的代码

基本步骤:

1.运行windbg,设置symbol路径:
    运行WinDbg -> 菜单 -> File->Symbol File Path -> 按照下面的方法设置_NT_SYMBOL_PATH变量:
    在弹出的框中输入“C:\MyCodesSymbols; SRV*C:\MyLocalSymbols*http://msdl.microsoft.com/download/symbols”
    (按照这样设置,WinDbg将先从本地文件夹C:\MyCodesSymbols中查找Symbol,如果找不到,则自动从MS的Symbol Server上下载Symbols)。

Symbol File Path 只填写 SRV* 的话,表示直接从MS下载symbols(联网的话,这样设置比较省事)

2.菜单 File -> Open Crash Dump,打开要分析的dump文件

3.菜单 Symbol File Path,设置符号文件路径在windbg命令行输入 !analyze -v  执行自动分析,如果栈回溯中有未加载符号的模块,可以通过 lmvm 命令找到模块的符号文件后,执行 !analyze -v 重新分析。

分析结果:

From:http://qa.xishanju.com/?p=384

WindDbug应用的更多相关文章

随机推荐

  1. 服务器部署_centos 安装nginx手记

    前言: a.linux上安装nginx网上有很多文章,本文仅仅是自己整理备忘. b.安装centos的时候,把develop相关组件都装上,免得缺这个缺哪个. c. 本文软件版本:nginx-1.2. ...

  2. [水题]ZOJ3038 Triangle War II

    题意: 给了这样一张图 有两种状态:pushed(*)和unpushed(.)    为方便起见分别成为 开 和 关 改变一个点的开关状态 会同时改变与它相邻的点的开关状态  比如改变5,则2.3.4 ...

  3. 《深入理解linux内核》第一章 序论

    硬链接的限制

  4. MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类

    MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型.是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器 ...

  5. 《C#并行编程高级教程》第3章 命令式任务并行 笔记

    Task的使用 var t1 = new Task(() => GenerateAESKeys());var t2 = new Task(() => GenerateMD5Hashes() ...

  6. js正则表达式及代码

    //校验是否全由数字组成function isDigit(s){var patrn=/^[0-9]{1,20}$/;if (!patrn.exec(s)) return falsereturn tru ...

  7. 全世界只有我们Erlang程序员是正确的

    http://www.aqee.net/erlang-solving-the-wrong-problem/ 对某些程序来说是的,但对大多数程序来说不是.对大多数程序来说24个CPU中只有一个被利用.C ...

  8. NEsper使用的事件类型 z

    NEsper使用的事件类型来描述事件的类型信息.你的应用在启动时可能预先配置定义事件类型,或者在运行时通过API或EPL语法动态的增加事件类型. EPL中的create schema 的语法允许在运行 ...

  9. boost库的使用(一)

    参考http://www.cnblogs.com/lexus/archive/2012/07/15/2592250.html bjam stage --without-python --toolset ...

  10. 转:ndk-stack打印崩溃堆栈

            接下来详细说明ndk-stack的使用方法.         第一步:首先获得发生崩溃的共享库.                 如果你是利用ndk-build应用的话,共享库会在$P ...