​javascript:void(0)​


网上有许多教程讲解关于使用KGDB和VirtualBox进行内核调试的,但是几乎都是使用两个虚拟机进行调试,本文主要是讲解如何使用host(自己的电脑)和一个虚拟机(guest)进行调试。本文主要是参考​​http://www.opensourceforu.com/2011/03/kgdb-with-virtualbox-debug-live-kernel/​​ 这个网页来讲的,但是有几点值得注意的地方:

1.在配置串口时可能会遇到很多报错,与kvm冲突,缺少kernel source等,这些问题都可以在网上搜索到解决的办法。另外,原网页中串口的路径是原作者电脑上的路径,你在配置时就在自己电脑上随便写个路径就行;

2.原文说使用NFS进行文件共享,感觉很复杂。其实可以使用VirtualBox“设置”选项里面的“共享文件夹”,将你要调试kernel source代码所在的文件夹添加,选择“固定分配”,然后在guest终端下面执行“sudo mount -t vboxsf /共享文件夹的名字(在共享文件夹里面可以看到) /mnt/share/”, /mnt/share/ 是你自己创建的一个目录,这样就可以在这个目录下访问或修改你的共享文件。(在虚拟机里面编译内核是非常耗时的,因此如果将内核代码所在的文件作为共享文件,就可以在host下make,然后在虚拟机里面make modules_install和make install);

3.原文里面使用socat时只用了“​​socat -d -d /code/guest/serial PTY:​​”一条命令(注意修改路径),笔者尝试了很多次都是不成功的。网上查阅许多资料后发现,在上一条命令之后,再运行"socat /code/guest/serial tcp-listen:5000"即可。然后在host进行gdb连接时应通过5000端口连接,即target remote:5000;

其他未涉及的地方请参考原文链接。