声明
,本文转载自http://blog.csdn.net/floweronwarmbed/archive/2008/11/01/3201307.aspx
,不过最初原创者无法知道,改日知道补上。
呵呵,搞点突兀的标题而已。其实说的还是如何使用WinDBG和VMware来搭建调试内核的环境而已,这些网上已经有数不清的教程了,不过我喜欢自己亲
手写一下。第一,把这个过程写一遍能加深印象,就算以后忘记了也可以有笔记查找,快速想起来。第二、网上的教程很多都是互相抄来抄去,连错误也抄过去了。
很典型一个错误就是Baud Rate,前面还写115200,后面就写成了11520了,狂汗!
按照我这篇笔记写的步骤去做,绝对能够成功,并且还能大略地了解到为什么要这样做的原因。第1部分是步骤,如果不想看原因的,直接按部照搬就可以成功。如果还想深入点了解为什么要做这些步骤,这些步骤的含义是什么?那就请继续看第二部分。
第一部分(步骤):
先统一名称,真实的操作系统叫HostOS,在VMware里虚拟的操作系统叫GuestOS。
1.在VMware里安装好GuestOS;下载WinDBG并安装好。
2.添加一个串口
在关闭GuestOS的情况下才能添加硬件。添加串口的过程如下:
选择“串行端口”,
选择“输出命名管道”
其他如下设置:
3.在GuestOS的boot.ini文件里填入如下内容:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft
Windows XP Professional Debug" /fastdetect /debugport=com1
/baudrate=115200
如图:
4.创建一个WinDBG的快捷方式,在“目标”一栏后面加上:
-b -k
com:pipe,port=\\.\pipe\com_1,resets=0
如图:
5.重启GuestOS,选择Debug模式。
6.双击第4步创建的那个快捷方式启动WinDBG,它会自动去连接调试GuestOS。
可以看到,已经成功了,现在可以尽情地调试内核了。
第二部分(解说):
原理就是VMware在GuestOS虚拟一个COM口,并在HostOS创建了一个管道,这个管道的一端连接GuestOS的COM口,另一端则是WinDBG,所以HostOS(WinDBG)和GuestOS的所有数据交换都是通过这个管道来流通转发的。
1.我的电脑没有COM口,所以不能搭建调试环境?
不是的,你的电脑有没有COM口与这个调试环境没有任何关系,整个过程根本没有使用到你电脑的物理COM口。VMware只是在GuestOS虚拟了一个COM口而已。
2.在创建串口(COM口属于串口的一种)的过程中,看到指定的管道为“\\.\pipe\com_1”,我可以指定为其他吗?
可以的。这只是指定一个管道名字而已,VMware用这个名字来创建一个命名管道。我完全可以改成“\\.\pipe\liangyu”、“\\.\pipe\aaa”等等,但记得要把WinDBG的快捷方式处的管道名字更改为一样。
3.我可以在GuestOS的boot.ini文件更改那个COM口吗?比如把COM1改为COM2?
不可以的,VMware会把虚拟出的这个COM口总是定义为com1。GuestOS的其他COM口都得让位。
4.看到很多教程都说到要勾选“I/O模式”,如图:
一定要勾选吗?
这个勾选不勾选都可以,我没发现有什么大的区别。
5.在更改GuestOS的boot.ini文件的时候,增加有“/debugport=com1
/baudrate=115200”这些内容,含义是?
使用的调试端口是com1,波特率是115200。这是在告诉GuestOS现在要调试内核(操作系统),把调试信息往COM1口输出,使用的波特率是115200。
我在试验的时候发现,这个波特率其实也不一定要设为115200,完全可以修改为112233、445566等等其他数据。可能是因为WinDBG自动调节波特率来适配管道或COM口,所以波特率在这里没有实际意义。
6.WinDBG的快捷方式那里添加了“-b -k
com:pipe,port=\\.\pipe\com_1,resets=0”这些内容,含义是?
大概意思就是使用管道“\\.\pipe\com_1”来进行内核调试。各个参数的说明在WinDBG的参考文档里面有,这里粘贴一下:
-b
(Kernel mode only)
This option has two effects:
1. The debugger will break into the target computer immediately upon
connection.
2. After a reboot, the debugger will break into the target computer once the
kernel is initialized. See Crashing
and Rebooting the Target Computer
for details and for other methods of
changing this status.
-k
[ConnectType
]
(Kernel mode only)
Starts a kernel debugging session. For details,
see Choosing
Kernel Debugging Settings
. If -k
is used without any
ConnectType
options following it, it must be the final entry on the
command line.
resets=0
Specifies that an unlimited number of reset packets can be sent to the
target when the host and target are synchronizing. Use the
resets=0
parameter for Microsoft Virtual PC and other virtual
machines whose pipes drop excess bytes. Do not use this parameter for VMware or
other virtual machines whose pipes do not drop all excess bytes.
7.一定要这样创建一个WinDBG的快捷方式才能进行调试吗?
不是的,我们完全可以先正常运行WinDBG,然后选择菜单“File”--->“Kernel Debug...”,然后会弹出以下对话框:
然后设置如上,点确定。这样也是可以进行调试的。
8.上面第5、第6步有先后顺序吗?看到很多资料都很强调这个先后顺序。
这个是没有先后顺序的。你可以先执行第5,再到第6步,或者先执行第6,再到第5步都是没有关系的。
选择Debug模式后,即使进入系统操作了很久,运行了很多东西,但只要你运行WinDBG,照样能够连上去调试。所以说这里是没有先后顺序的。
虚拟机部分配置,英文请参考:http://silverstr.ufies.org/lotr0/windbg-vmware.html
Vista部分参考: http://www.pediy.com/bbshtml/bbs8/pediy8-484.htm(本人未测试)
分享到:
相关推荐
本文将详细探讨“virtualKD+windbg+vmware 极速调试”这一主题,帮助你掌握如何利用这些工具高效地进行Windows内核调试。 **virtualKD** virtualKD是由微软开发人员之一Pavel Yosifovitch创建的一款实用工具,专门...
具体操作可以参照《Windbg+VMware 双机调试 Windows 7 内核》这篇文档的指导,按照步骤进行设置。 完成以上步骤后,就可以在调试主机上启动WinDbg,连接到虚拟机中的32位Win7系统。在cmd窗口中,定位到WinDbg的安装...
### 使用Windbg与虚拟机进行Windows内核调试详解 #### 一、概述 在软件开发过程中,特别是针对操作系统级别的问题,内核调试是一项至关重要的技能。对于Windows平台而言,使用Windbg工具配合虚拟机环境进行内核...
**WinDbg**是一款由微软提供的强大且免费的调试工具,它支持用户模式和内核模式下的应用程序及驱动程序调试。该工具不仅功能全面,而且易于使用,被广泛应用于软件开发和故障诊断等领域。 **下载地址**: - 官方...
### WinDbg与VMware虚拟机调试配置 在IT领域,特别是对于开发人员而言,能够高效地调试系统或驱动程序是非常重要的。本文旨在通过解决WinDbg与VMware虚拟机之间无法正常连接的问题来帮助大家更好地理解如何配置这两...
本文主要针对Windows内核(WRK)的源码分析方法,重点介绍了如何利用WinDbg结合Bochs进行内核级别的调试。WinDbg是一款由微软提供的强大调试工具,能够支持对Windows内核、用户模式应用程序及驱动程序的调试;而...
### VMware + Windgb + Win7 内核驱动调试知识点总结 #### 一、概述 本文主要介绍了如何在特定环境下配置并使用 VMware + Windgb + Win7 进行内核驱动程序的调试。这对于开发和测试操作系统内核级别的软件非常有用...
而且,由于驱动程序运行在内核模式,编写和调试内核程序时,如果没有正确的操作,极容易导致系统崩溃(蓝屏)。此外,因为操作系统在加载驱动程序后将无法进行自我调试,所以必须通过另一个操作系统来进行调试。 ...
### Windows内核调试环境搭建详解——基于VmWare #### 一、概述 本文档主要介绍如何使用VmWare搭建一个Windows内核调试环境。通过这种方式,我们可以在不干扰宿主机正常工作的前提下,对Windows内核及驱动程序进行...
通过以上步骤,我们可以成功地在VMWare虚拟机环境中配置并使用WRK内核,进一步配合WinDbg调试工具进行深入的研究和学习。这种配置不仅能够帮助我们更好地理解Windows操作系统的工作机制,还能够在不对实际物理机造成...
WinDBG+VMware=调试内核 - **WinDBG**:一种广泛使用的调试工具,可以用来调试用户模式和内核模式的应用程序。 - **VMware**:虚拟化平台,常用于模拟不同环境下的测试和调试场景。结合WinDBG,可以在VMware虚拟机...
Windbg是微软出品的一款双机调试软件,用于调试Windows内核程序。双机调试的主要思想是使用虚拟机和主机来进行调试,虚拟机上安装要调试的操作系统,而主机上安装Windbg。 调试前的准备 1. 安装Windbg和VMWare...
### WinDbg内核调试配置详解 #### 一、概述 **WinDbg** 是一款由微软提供的功能强大的调试工具,适用于多种类型的调试任务,包括应用程序调试、内核调试等。本文将重点介绍如何进行**内核调试配置**,特别关注在...
总的来说,Windbg611是一个对VMWare驱动开发调试非常有价值的工具,通过它的源码级调试功能,开发者可以更高效地诊断和修复驱动程序中的问题,避免了因频繁蓝屏带来的困扰。对于任何涉及Windows驱动开发的工程师来说...
VirtualKD-3.0是一款专为Windows系统调试设计的强大工具,尤其在VMware虚拟化环境中,它能够极大地提升调试效率。这款神器的核心功能是通过网络连接将物理主机(调试者的工作站)与虚拟机(被调试的目标系统)相结合...
WinDbg是微软出品的一款强大的调试工具,主要用于系统内核、驱动程序以及应用程序的调试。它提供了丰富的命令集,可以查看内存、跟踪执行流程、分析崩溃堆栈等,对于解决系统崩溃、蓝屏等问题尤为有效。WinDbg支持...
内核调试和WinDbg备忘单我使用WinDbg进行内核调试的个人备忘单。 当我使用WinDbg进行新操作时,本备忘单/迷你指南也会更新。内核调试设置安装调试工具要使用windbg,您必须安装。 我建议从Windows应用商店安装Windbg...
Windbg是一款强大的调试工具,由微软提供,特别适合对操作系统内核和驱动程序进行调试。"windbg_cn.exe"可能是指中文版的Windbg,方便不熟悉英文界面的用户使用。 "双机调试.exe.lnk"可能是一个快捷方式,指向用于...
其次,WinDbg是一款强大的微软调试工具,尤其适用于内核模式的调试,包括驱动程序的调试。WinDbg提供了丰富的命令行接口和图形界面,可以帮助开发者追踪代码执行流程,定位和修复驱动程序中的错误。在环境搭建的过程...
VirtualKD是一款虚拟机数据传输加速软件,如果你正在使用Windbg Vmware或Windbg VirtualBox进行内核调试,并且觉得虚拟串口方式过于缓慢,那么这个就是你最需要的东西了!它可以大幅提升调试时数据传输的速度。 ...