首先要配置好各个虚拟机,着重要配置的各个虚拟机的串口,一个作server,一个作client,被调试的当然是server了
1. 配置调试机
2. 配置被调试机
3. 在内核中增加调试选项
options DDB
makeoptions DEBUG=-g
device sio0 at isa? port IO_COM1 flags 0x10 irq 4
device sio1 at isa? port IO_COM2 flags 0x80 irq 3
串口1一般用作控制台,在此保留了,串口2才是调试口,注意其标志位为0x80
# config -d /tiny TINY ; cd /tiny; make depend;make
对于内核和源码的位置可以有下面几种处理方式,
一是直接在调试机上编译内核,
二是在其他服务器上编译,然后将包含源码以及kernel.debug的目录nfs共享,调试机挂接
三是通过pxe远程引导一个系统
推荐采用第三种方式:
在服务器上一目录中单独安装一个相应版本的系统(4.x和5.x是不兼容的,请注意),所有的编译操作都在这个目录下进行
当然要chroot到这个目录下。
pxe远程引导这个系统。这个目录无论在服务器上还是在pxe引导的客户机上的目录映射都是相同的,编译速度和便捷都有保证。
将kernel拷贝到被调试机上,启动。同时启动调试机。
进入被调试机
按ctrl-alt-esc,进入db状态
进入调试机
# gdb -k kernel.debug
(kgdb) target remote /dev/cuaa0
调试机开始尝试连接远程被调试机
连接完成后
(kgdb) c
继续执行,在以后的操作中,可以随时在被调试机上中断,进入gdb中。在调试机上就可以设置断点,跟踪调试了。
panic 就会慢慢地从你手中消失,如同手中的那片雪花。