在VMware环境下,使用KGDB调试内核及内核模块---基于kernel 2.6.36
系统环境:
虚拟环境: VMWare Workstation 7.1.4(英文版)
操作系统: CentOS-6.0-i386(原内核2.6.32,将会把内核升级至2.6.36)
注:CentOS 是RedHat的一个社区版本.
(由于我们采用的linux kernel 2.6.36已经集成kgdb,kgdb再不需要单独下载)
安装CentOS 6(参见CentOS 6.0图解网络安装全过程 )
安装完成后,关闭计算机,然后Clone一台同样的计算机.步骤如下:
点击VM->Clone
选中默认的From current state,点击Next
选中Create a full clone, 点击Next
Virtual Machine name 输入Server(Targe),将克隆的机器命令为目标机.
说明一下,kgdb 需要两台计算机通过串口进行远程调试,两台计算机分别为:
Client(Development):开发机,也称客户机,将在该计算机上进行程序的开发,GDB将在本计算机上运行.用于输入命令控制Server(target)的运行.
Server(Target): 目标机,也称服务器,就是被调试的计算机,在Development机上开发好的内核模块程序将拷贝到Target上运行,其运行受到Development命令的控制.
分别为两个系统增加一个串口,以"Output to named pipe"方式,其中:
Client端选择"this end is the client", "the other end is a virtual machine"
Server端选择"this end is the server", "the other end is a virtual machine"
备注: 两个pipe的名称要相同,并且选中下面的Connect at power on,及I/O mode 里面的Yield CPU on poll
以后的部分,Server上的操作与Client上的操作将以不同的背景色显示,输入的命令将以不同的字体颜色并带下划线显示.请注意:
Server(Target) 输入: cat /dev/ttyS0
系统输出的信息: hello
Client(Development) 输入: echo "hello" >/dev/ttuS0
串口添加完成后,使用如果命令测试:
在Server上cat /dev/ttyS0
然后到Client上 echo "hello" > /dev/ttyS0
这时回到Server上,如果能看到输入的hello,说明串口通讯正常.
阅读(1749) | 评论(0) | 转发(0) |