virtualbox调试linux内核,virtualbox+kgdbt调试linux内核

参考http://blog.csdn.net/zr_lang/article/details/8107015

环境需求:

两台linux虚拟机,我这里用的virtualbox安装的ubuntu12.04系统,内核版本3.2

其中1台虚拟机作为开发机virtualpc,另一台则作为被调试机target

过程:

由于不会对下载来的内核源码进行准确的编译配置,一般下载的源码编译安装后无法引导,提示缺少相关模块,这就是由于模块配置的原因无法进入新装内核系统,而不同版本之间的配置文件又无法通用

不过在查看原系统配置文件的时候发现这个直接安装的系统居然已经配置了所需的KGDB选项(虽然不知道一般的发行版为什么会默认配置这个.....)

这样就好办了根本不需要重新编译安装新内核,只要在当前可用内核中添加kgdb启动参数就能等待调试了,于是在target中sudo apt-get install linux-image-3.2.0-51-generic-pae,在grub.cfg中copy出一个新的3.2.51内核的启动项,然后在启动参数后添加kgdboc=ttyS0,115200 kgdbwait。

然后在www.kernel.org下载了3.2.0-51版本的内核,make bzImage后获得调试需要的vmlinux内核文件。

同时设置启用两台虚拟机的串口COM1,端口模式为主机管道,输入相同的管道文件路径,并在virtualpc中勾选创建通道。

首先启动virtualpc开发机,将下载编译了的内核源代码复制或共享到开发机中,启动target调试机选择新的kgdb调试选单,会出现等待远程调试连接的提示,这时候就能使用我们的gdb来调试内核了,gdb的简单UI版gdbtui或者cgdb也可以使用,调试起来更加直观。这里使用了cgdb,首先:

cd到源码根目录

cgdb  vmlinux

set remotebaud 115200

target remote /dev/ttyS0

之后就会出现内核源码并能够开始真正的调试工作,同时可以观察target的变化。

经测试上面链接中的用主机gdb在set remotebaud 115200后用target remote | socat  stdio  unix-connect:/tmp/vbox来连接管道调试虚拟机可行。看来主机调试虚拟机是完全没问题地!~

贴上调试效果:

0818b9ca8b590ca3270a3433284dd417.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值