qemu+kgdb+arm

最近学习arm时钟机制,在读linux代码的时候,感觉有好多东西不是很直观,就决定用kgdb来跟踪代码执行过程,下面就介绍一下怎么实现的,其实很简答:

1,首先你当然需要一个交叉工具的gdb,我之前博客里用的是arm-2010q1-202-arm-none-linux-gnueabi.bin,在这里面你会发现有arm-none-linux-gnueabi-gdb,有这个就可以了。

2,编译内核,我基本用的是versatile的默认配置文件,因为我用qemu模拟的versatilepb,如果要用kgdb,得打开kernel hacking里面的compile kernel info选项,其它的可以 不选。

3,开启虚拟机,我用以下命令:

#qemu-system-arm  -s  -S  -M versatilepb -m 256M -kernel $load_kernel  -append "root=/dev/nfs nfsroot=192.168.1.208:/mnt/sdb1/ARM_XM_QEMU/FS  ip=192.168.1.202:192.168.1.208:192.168.1.1:255.255.255.0  console=ttyAMA0 "   -net nic,vlan=0 -net tap,vlan=0,ifname=tap0,script=/etc/qemu-ifup   -nographic

 

4,另开启一个终端,进到linux 内核的目录。

$arm-none-linux-gnueabi-gdb vmlux

$target remote :1234

$设置断点

$c  //因我qemu用了-S,所以在启动的时候cpu会停止,这样就可以调试跟踪内核启动时候的步骤。

 

ok,现在就可以跟操作gdb一样操作它了,

 

NOTE:上述qemu启动命令里面的-s 指的是qemu 里面gdb调试,-S是系统开启的时候停止,类似于两个真是机器之间用kgdb调试的时候里grub里的kgdbwait一样,可以看出qemu调试很方便,只需要加上这两个,就可以调试内核,或者其他东西。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值