要调试内核代码是一件不容易的事情,一般是需要双机调试的方法,一台电脑作为目标机器来运行编译出来的操作系统,另一台电脑作为跟踪调试的机器,用来查看操作系统输出的调试信息、以及输入命令给操作系统。现在就来介绍基于虚拟机的方式来调试内核代码,最简单的方式就是使用串口通讯的方式,并且串口设置为零调制方式,也就是说只需要把数据线接收和发送交叉连接就可以了。假如在物理的电脑里有两个串口,分别命名为COM1COM3,那么就可以在虚拟机里使用COM1作为输出串口,然后拿一条交叉的串口线把物理串口COM1COM3连接起来,再打开串口程序并且连接串口COM3,那么就可以显示操作系统输出的信息,也可以输入命令给虚拟机操作系统了。交叉的串口线如下图所示:

DTE1_______________________________________________DTE 2

 

9pol 25pol (female)__________________________25pol 9pol (female)

5    7  ---GND---------------------GND-------  7   5

 

2    3  ---RxD--------. ,----------RxD-------  3   2

                               X

3    2  ---TxD--------' `----------TxD-------  2   3

 

7    4  ---RTS--------. ,----------RTS-------  4   7

                               X

8    5  ---CTS--------' `----------CTS-------  5   8

 

4   20  ---DTR--------. ,----------DTR------- 20   4

                                X

6    6  ---DSR--o-----' `-------o--DSR-------  6   6

                         |               |

1    8  ---DCD--'               `--DCD-------  8   1

 

其实使用虚拟机,就更加方便了,即使没有物理串口,也可以使用虚拟串口的方式来连接虚拟机和主机之间的通讯。在WinXP操作系统里,可以编写虚拟的驱动程序,这样就可以虚拟两个串口出来,并且这两个串口就是为了交换数据的。因此需要安装一个可以虚拟两个串口,并实现零调制方式的驱动程序,它就是com0com驱动程序。可以通过下面的网页下载:

http://sourceforge.net/projects/com0com/files/

我这里下载的是com0com-2.2.2.0-i386-fre.zip文件,解压并安装后,就可以通过开始菜单里找到Setup程序来配置两个串名称和参数等,如下图:

接着运行Setup程序,就可以出现下面界面:

 

上面不是安装后缺省的参数,我更改两个串口的名称为COM7COM8。这样就准备好两个通讯的串口了,然后在VMware里就可以添加串口COM7作为输出输入串口,如下图所示:

 

设置好虚拟机的串口后,就可以去设置主机的串口程序了。这里使用PuTTY程序来作为串口程序,需要从下面的网站上下载,如下:

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

 

下载完程序后,然后运行程序打开COM8的串口,这样可以设置串口完成。

最后选择KDBG方式编译,选择ReactOS(RosDbg)的方式启动,就会在PuTTY里看到下面的界面,并可以输入调试命令,如下:

 

通过这样的方式,就可以进入内核代码的调试和开发了。

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐