Windbg调试软件系统崩溃
来源:互联网 发布:vb中and和or的优先级 编辑:程序博客网 时间:2024/04/27 22:41
一、Windbg简介
WinDBG是一个非常强大的调试器,它设计了极其丰富的功能来支持各种调试任务,包括用户态调试,内核态调试,调试转储文件,远程调试等。WinDBG具有非常大的灵活性和可扩展性,用来满足各种各样的调试需求,比如用户可以自由定义调试事件的处理方式,编写调试扩展模块来定制和补充WinDBG的调试功能。
尽管WinDBG是个典型的窗口程序,但是它的大多数调试功能还是以手工输入命令的方式来工作。WinDBG提供了20多条标准命令,140多条元命令,和大量扩展命令,学习和灵活使用这些命令是学习WinDBG的关键,也是难点。
二、WinDBG配置
1.配置WinDBG软件标识路径
(1)打开WinDBG软件,如下图所示。
(2)点击File菜单,选择Symbol File Path菜单项,在弹出的对话框中输入WinDBG标识的路径,如下图所示。
(3)输入以上符号路径后,点击OK,设置完成。
2.配置WinDBG软件搜索代码路径
(1)点击File菜单,选择Source Search Path菜单项,在弹出的对话框中输入要进行调试系统的代码路径(代码设置的路径到解决方法一级),如下图所示。
(3)输入代码路径后,点击OK,设置完成。
二、WinDBG调试系统
1.系统崩溃识别
当发生系统崩溃时,不要急着关掉程序或关掉提示对话框,系统崩溃时的状况如下图所示。
2.打开WinDBG与崩溃的系统进行链接
(1)打开WinDBG软件,并确认是否正确设置标识和代码搜索路径,点击File菜单,选择Attach to a Process菜单项,如下图所示。
(2)在弹出的对话框中选择要调试的系统进程,如下图所示。
(3)此时WinDBG进入用户态调试,如下图所示。
3.输入命令进行调试
(1)在Command窗口下输入:~* kb并点击回车键,显示所有的线程,如下图所示。
(2) 显示的所有线程中寻找Kernel32! UnhandledExceptionFilter信息,如下图所示。
(3) 根据以上信息可以知道系统崩溃所在的线程是16号线程,在WinDBG的线程窗口中,用鼠标选中第16号线程,如下图所示。
(4)在Command窗口中输入:dd0358d890命令,显示第一个参数的内存信息,此时指向EXCEPTION_POINTERS结构,如下图所示。
(5) 显示EXCEPTION_POINTERS 结构内存信息详细,如下图所示。
(6) 在Command窗口中输入:.exr 0358d840命令,获取有关异常的类型信息,如下图所示。
(7) 在Command窗口中输入:.cxr 0358d898命令,获取上下文的信息,如下图所示。
(8) 在Command窗口中输入:kv命令,获得实际的异常的调用堆栈,如下图所示。
kv命令显示异常调用堆栈信息
0:016> kv
*** Stack trace for last set context - .thread/.cxr resets it
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may be wrong.
0358dbb0 026ff8ac 0358dc2c 00000001 00000008 MSVCR80!fwrite+0x39
0358ec34 02700d82 03460000 000027d8 03478f1c 123::ReadData+0x7c [123.cpp @ 176]
(9) 根据以上信息可知,崩溃的文件是123.cpp。崩溃的函数是fwrite。
- Windbg调试软件系统崩溃
- windbg 调试崩溃实例
- windbg 调试崩溃实例
- windbg 调试崩溃实例
- WinDbg调试 崩溃程序
- 软件调试windbg
- windbg 调试崩溃实例 2 则
- windbg 调试崩溃实例 2 则
- 软件崩溃之堆栈调试
- 玩转windbg软件调试视频教程发布-windbg入门教程
- 生成程序崩溃的dump文件,使用windbg调试
- 生成程序崩溃的dump文件,使用windbg调试
- 软件调试系列之Windbg探究
- Windbg在软件调试中的应用
- Android系统调试-程序崩溃调试
- WinDBG 技巧:设置系统默认调试器
- WinDBG 技巧:设置系统默认调试器
- WinDBG 技巧:设置系统默认调试器
- 不多不少才是幸福
- 关于写程序的信息页面
- FTP帐户权限与本地用户权限的关系
- pca算法
- 获取iOS文件目录
- Windbg调试软件系统崩溃
- Eclipse快捷键
- C/C++ strcpy实现
- 自定义Dialog:双日期选择器
- 在strut2中使用servlet
- 开源日志系统比较
- apache一些命令和报错以及解决办法
- 重构--改善既有代码的设计
- 不在使用 CDSN 博客 全部转到 http://www.cnblogs.com/key-ok/