Windbg内核调试之一: Vista Boot Config设置

Windbg进行内核调试,需要一些基本的技巧和设置,在这个系列文章中,我将使用Windbg过程中所遇到的一些问题和经验记录下来,算是对Kernel调试的一个总结,同时也是学习Windows系统内核的另一种过程。

很多人说Windbg不如SoftIce好用, 但是我使用过程中还是觉得Windbg能更好的反映系统状态, 而且相比SoftIce, Windbg更稳定(虽然它的部分操作略显复杂), 下面介绍Windbg的Kernel模式调试第一部分: 双机连接设置.

Vista和XP不同, 没有boot.ini文件, 需要用bcdedit进行启动设置。(关于启动数据配置编辑器BCD的具体设置, 参见另一篇文章: (From MS)Vista: 启动配置数据编辑器(BCD))

在administrator权限下, 进入command line模式,  键入bcdedit命令, 会出现以下界面:

 

然后, 设置端口COM1, baudrate为115200 (除COM1外, 也可以用1394或USB. 1394用起来比COM口快多了, 当然前提是你需要有1394卡及其驱动. 很恶心的是Vista不再支持1394的文件传输协议, 但是用windbg双机调试还是可以的)
命令为:
bcdedit /dbgsettings {serial [baudrate:value][debugport:value] | 1394 [channel:value] | usb }



接着, 我们需要复制一个开机选项, 以进入OS的debug模式
命令为:
bcdedit /copy {current} /d DebugPoint
DebugPoint为选项名称, 名字可以自己定义. 然后复制得到的ID号.



接着增加一个新的选项到引导菜单
bcdedit /displayorder {current} {ID}
这里的{ID}的ID值是刚生成的ID值.



激活DEBUG : bcdedit /debug {ID} ON
这里的{ID} 的ID值还是刚才的ID值.



命令执行成功后, 重新启动机器.

选择DebugPoint登录,开启Windbg

连接成功, 则显示如下:
Microsoft (R) Windows Debugger  Version 6.6.0007.5
Copyright (c) Microsoft Corporation. All rights reserved.

Opened //./pipe/com_1
Waiting to reconnect...
Connected to Windows Vista 6000 x86 compatible target, ptr64 FALSE
Kernel Debugger connection established.
Symbol search path is: symsrv*symsrv.dll*F:/symbols*http://msdl.microsoft.com/download/symbols
Executable search path is: 
Windows Vista Kernel Version 6000 MP (1 procs) Free x86 compatible
Built by: 6000.16386.x86fre.vista_rtm.061101-2205
Kernel base = 0x81800000 PsLoadedModuleList = 0x81911db0
System Uptime: not available
Break instruction exception - code 80000003 (first chance)
*******************************************************************************
*                                                                            
*   You are seeing this message because you pressed either                   
*       CTRL+C (if you run kd.exe) or,                                       
*       CTRL+BREAK (if you run WinDBG),                                      
*   on your debugger machine's keyboard.                                     
*                                                                            
*                   THIS IS NOT A BUG OR A SYSTEM CRASH                      
*                                                                            
* If you did not intend to break into the debugger, press the "g" key, then  
* press the "Enter" key now.  This message might immediately reappear.  If it
* does, press "g" and "Enter" again.                                         
*                                                                            
*******************************************************************************
nt!RtlpBreakWithStatusInstruction:
81881760 cc              int     3

总结: 虽然利用VMware虚拟机能更方便的设置双机的调试环境, 而且这种模拟环境也是大多数人使用的(方便), 但是如果有双机条件的话,  还是希望大家能够使用两台机器, 因为用虚拟机进行Kernel调试, 真不是一般的慢! 基本就等于死机. 即时你的主机内存2G, 分给VMware1G, 还是会相当卡(Kerenl模式与User模式不同).

 

http://www.cnblogs.com/Sonic2007/archive/2008/03/20/1114807.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于内核调试Windbg 是一种常用的工具。它是微软官方提供的调试器,用于调试 Windows 操作系统的内核模式和用户模式程序。以下是一些关于使用 Windbg 进行内核调试的基本步骤: 1. 准备环境:首先需要安装 Windbg 调试工具,并确保目标机器上已经启用了内核调试。 2. 连接目标机器:使用串口、网络或火线等方式将目标机器连接到调试机器上。 3. 配置符号文件路径:在调试机器上设置符号文件路径,以便 Windbg 能够正确解析调试信息。 4. 启动 Windbg:打开 Windbg 工具,并选择内核模式调试。可以通过 File -> Kernel Debug... 或者 Ctrl+K 快捷键来选择。 5. 配置调试连接:在弹出的对话框中,选择调试连接的方式和连接参数,比如选择串口调试、网络调试或火线调试,并输入相应的参数。 6. 开始调试:点击 OK 后,Windbg 会尝试与目标机器建立连接,并开始内核调试。在这个阶段,可以观察到目标机器的启动过程,并在 Windbg 中查看和分析调试信息。 7. 运行调试命令:在 Windbg 中可以使用各种调试命令来控制调试过程,比如设置断点、查看寄存器、内存和堆栈等信息,以及执行单步调试调试器命令等。 8. 分析问题:通过观察调试信息和运行调试命令,可以分析出问题的原因,并进一步进行故障排除和调试。 需要注意的是,内核调试是一项高级调试技术,对于初学者来说可能有一定的难度。在进行内核调试之前,建议先熟悉 Windbg 的基本使用方法,并了解一些常见的内核调试技巧和技术。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值