使用WinDbg调试入门(内核模式)
设置内核模式调试
内核模式调试环境通常有两台计算机:主机和目标计算机。调试器在主机上运行,正在调试的代码在目标计算机上运行。主机和目标通过调试电缆连接。Windows调试程序支持以下类型的电缆进行调试:
- Ethernet
- USB 2.0
- USB 3.0
- 1394
- Serial (also called null modem)

如果目标计算机运行的Windows版本早于Windows 8,则不能使用以太网进行调试;必须使用USB、1394或串行。此图说明了通过USB、1394或串行调试电缆连接的主机和目标计算机。
建立内核模式调试会话
在设置好主机和目标计算机并用调试电缆将它们连接起来之后,您可以按照用于设置的同一主题中的说明建立内核模式调试会话。例如,如果您决定设置主机和目标计算机以通过以太网进行调试,参考《通过网线手动设置内核模式调试》。同样,如果您决定设置主机和目标计算机以通过USB 2.0进行调试,您可以找到建立内核模式调试会话的说明,参考《通过USB 2.0电缆手动设置内核模式调试》
开始调试
2、在windbg中,从帮助菜单中选择内容。这将打开调试器文档chm文件。调试程序文档也可以在这里在线获得。
3、当建立内核模式调试会话时,windbg可能会自动进入目标计算机。如果windbg尚未插入,请从“调试”菜单中选择“中断”。
4、在windbg窗口底部附近的命令行中,输入以下命令:

符号搜索路径告诉windbg在哪里查找符号(pdb)文件。调试器需要符号文件来获取有关代码模块(函数名、变量名等)的信息。输入此命令,通知windbg执行符号文件的初始查找和加载:
5、查看加载模块的列表,请输入以下命令:
6、让目标计算机运行,请输入以下命令:g
7、要再次打断,请从“调试”菜单中选择“打断”。
8、输入此命令以检查NT模块中的_FILE_OBJECT
9、输入此命令检查NT模块中的某些符号:
10、输入此命令以在MmCreateProcessAddressSpace:处放置断点:
bu nt!MmCreateProcessAddressSpace
输入 g 让目标机运行
11、如果目标计算机没有立即进入调试器,请在目标计算机上执行一些操作(例如,打开记事本)。调用mmcreateProcessAddressSpace时,目标计算机将进入调试器。要查看堆栈跟踪,请输入以下命令:
12、在“视图”菜单上,选择“反汇编”。
13、通过输入以下命令清除断点: bc *
14、查看所有进程的列表,请输入以下命令: !process 0 0
15、复制一个进程的地址,然后输入以下命令:!process Address 2
For example: !process ffffe00000d5290 2
16、复制一个线程的地址,然后输入以下命令:!thread Address
For example: !thread ffffe00000e6d080
17、查看即插即用设备树中的所有设备节点,请输入以下命令: !devnode 0 1
18、查看设备节点及其硬件资源,请输入以下命令:!devnode 0 9
19、查看服务名称为磁盘的设备节点,请输入以下命令:!devnode 0 1 disk
20、复制devnode 0 1输出显示节点的物理设备对象(PDO)的地址,然后输入以下命令: !devstack PdoAddress
For example: PdoAddress!devstack 0xffffe00001159610
21、获取有关driver disk.sys的信息,请输入以下命令:!drvobj disk 2
22、!drvobj的输出显示调度例程的地址:例如,classpnp!类别全局显示。要在ClassGlobalDispatch上设置和验证断点,请输入以下命令: bu CLASSPNP!ClassGlobalDispatch bl

23、结束调试会话,请输入以下命令:qd
使用WinDbg调试入门(内核模式)的更多相关文章
- 使用WinDbg调试入门(用户模式)
windbg是一个内核模式和用户模式调试器,包含在Windows调试工具中.在这里,提供个实践练习,帮助我们开始使用windbg作为用户模式调试器. 用WinDbg调试记事本 1.导航到安装目录,然后 ...
- .NET高级调试系列-Windbg调试入门篇
Windbg是.NET高级调试领域中不可或缺的一个工具和利器,也是日常我们分析解决问题的必备.准备近期写2篇精华文章,集中给大家分享一下如果通过Windbg进行.NET高级调试. 今天我们来一篇入门的 ...
- windbg 如何再内核模式调试用户空间的程序
1:使用!process 0 0 获取用户空间的所有的进程的信息 !process 0 0 **** NT ACTIVE PROCESS DUMP **** PROCESS 80a02a60 ...
- 【旧文章搬运】Windbg+Vmware驱动调试入门(四)---VirtualKD内核调试加速工具
原文发表于百度空间,2009-01-09========================================================================== 今天又想起 ...
- 使用WinDbg调试SQL Server——入门
这篇文章我想探究下SQL Server里完全不同的领域:如果使用WinDbg(来自针对Windows的调试工具)调试SQL Server.在我们进入枯涩细节之前,我想详细解释下为什么选择这样晦涩的话题 ...
- Windows内核开发-5-(2)-内核模式调试
Windows内核开发-5-(2)-内核模式调试 普通用户模式的调试,采取的是给进程添加一个线程来挂起断点,作为一个调试器的线程在进程中使用.照这样来类推,对操作系统调试相当于添加一个进程来限制操作系 ...
- ------- 软件调试——挫败 QQ.exe 的内核模式保护机制 -------
------------------------------------------------------------------------ QQ 是一款热门的即时通信(IM)类工具,在安装时刻会 ...
- 【旧文章搬运】Windbg+Vmware驱动调试入门(三)---Windbg基本调试入门
原文发表于百度空间,2009-01-09========================================================================== 这一节的内 ...
- 【旧文章搬运】Windbg+Vmware驱动调试入门(一)---Windbg的设置
原文发表于百度空间,2009-01-08========================================================================== Windb ...
随机推荐
- 法那科 三菱 CNC虚拟机
有虚拟机,就不用去线上 接线调机了,影响生产,还怕搞坏机子,很方便.
- 使用PHP开发HR系统(3)
本节我们讲述如何创建主页. ====================================================================================== ...
- Stack实现
栈的三种操作算法很简单 STACK-EMPTY(S) 1 if S.top == 0 2 return TRUE 3 else return FALSE PUSH(S, x) 1 S.top = ...
- kibana内存设置
kibana是一个基于NodeJS的单页web应用.而NodeJS则是基于Chrome V8引擎的.V8引擎对于内存的使用是有限制的,默认情况下,64位系统下约为1.4GB,32位系统下约为0.7GB ...
- C#设计模式之11:命令模式
C#设计模式之11:命令模式 命令模式 命令模式用来解决一些复杂业务逻辑的时候会很有用,比如,你的一个方法中到处充斥着if else 这种结构的时候,用命令模式来解决这种问题就会让事情变得简单很多. ...
- js判断数组中是否有重复元素
方法一:正则 var ary = new Array("111","ff","222","aa","222&q ...
- [Props] vue组件间的传值及校验
基本用法 Prop的基本用法很简单,只需要在子组件的Vue实例中定义该属性并把值设为目标属性的数组即可 Vue.component('child', { ... // 接收message props: ...
- Vue项目整体架构记要
此文记录初次学习Vue的一些记要,可做为参考,导图有些生涩,故意不再加以修复完善,以持初心!
- ifup/ifdown
这两个程序其实是script而已,它会直接到 /etc/ sysconfig/network-scripts目录下搜索对应的配置文件,例如ifup eth0,它会找出ifcfg-eth0这个文件的内容 ...
- eclipse如何为java项目生成API文档
文章转载自: https://www.cnblogs.com/wdh1995/p/7705494.html 当我们的项目很大,编写了很多代码的时候,就需要生成一个标准的API文档,让后续的开发人员,或 ...