ubuntu14.04下qemu调试linux内核

http://blog.csdn.net/barry283049/article/details/42970739

编译内核

  • 解压缩内核【这里使用linux-3.10.58】
  • make menuconfig:在kernel hacking中选中compile the kernel with debug info【记得提前安装libncurses5-dev
  • make bzImage:编译内核

更新gdb

  • gdb-7.8.tar.gz下载最新的gdb(7.8)到/opt目录下【目录随意选】
  • 解压缩:tar zxvf gdb-7.8.tar.gz
  • 修改代码【否则调试内核会出现remote 'g' packet reply is too long的问题】
cd gdb-7.8/gdb
vim remote.c
按照如图所示修改代码【针对7.8版本】:

代码如下:
  1. if (buf_len > 2 * rsa->sizeof_g_packet) {    
  2.       rsa->sizeof_g_packet = buf_len ;    
  3.       for (i = 0; i < gdbarch_num_regs (gdbarch); i++)    
  4.       {    
  5.          if (rsa->regs->pnum == -1)    
  6.          continue;    
  7.     
  8.          if (rsa->regs->offset >= rsa->sizeof_g_packet)    
  9.          rsa->regs->in_g_packet = 0;    
  10.          else    
  11.          rsa->regs->in_g_packet = 1;    
  12.       }    
  13.    }    
  • 安装gdb
  • 在主目录gdb-7.8下依次运行命令:

./configure

make

make install

启动qemu

  • cd ~/linux-3.10.58
  • qemu -S -kernel arch/x86/boot/bzImage -m 1024,启动界面如下:

  • 同时摁ctrl+alt+2 输入gdbserver tcp::1234,建立并等待gdb连接

  • 同时摁ctrl+alt+1返回qemu
  • 另外开一个终端到linux-3.10.58主目录下,输入命令:gdb vmlinux
  • 在gdb下输入:target remote localhost:1234 连接qemu
  • 设置断点【举例:b do_fork】
  • 输入命令c开始执行到断点处
  • 输入命令n执行下一个语句
  • 。。。

参考链接:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值