感谢支持
我们一直在努力

Qemu kgdb调试内核

1,编译内核
按 linux-2.6.30 内核配置 版本5 编译内核 http://www.linuxidc.com/Linux/2011-12/49118.htm


2,用Qemu 启动Linux
/usr/local/qemu/bin/qemu -kernel ./linux-2.6.30/arch/i386/boot/bzImage -hda ./1248179541.img -boot c -append “root=/dev/sda kgdboc=ttyS0,115200 kgdbwait” -net nic,vlan=0 -net tap,vlan=0,ifname=tap0,script=/etc/qemu-ifup -serial tcp::4321,server -alt-grab


a,/usr/local/qemu/bin/qemu  : qemu 程序,下边为参数
b,-kernel ./linux-2.6.30/arch/i386/boot/bzImage  :  指定内核
c,-hda ./1248179541.img :指定磁盘文件
d,-boot c :qemu 启动参数
e,-append “root=/dev/sda kgdboc=ttyS0,115200 kgdbwait” : 内核启动参数
f,-net nic,vlan=0 -net tap,vlan=0,ifname=tap0,script=/etc/qemu-ifup :网络接口参数
g,-serial tcp::4321,server :串口参数
h,-alt-grab :使用ctrl + Shift + Alt 作为热键


3,启动GDB
gdb vmlinux


设定波特率
set remotebaud 115200


连接到调试系统
target remote localhost:4321


当调试系统就绪时,会有如下信息
Remote debugging using localhost:4321
Malformed response to offset query, QC0000000000000001


重新连接到调试系统
target remote localhost:4321


4,让系统启动完成(不打算调试启动过程的话)
continue


5,让系统陷入调试
在目标系统上输入
echo g > /proc/sysrq-trigge


=======================
使用qemu gdb-stub使用:


A Qemu debug memo 0) 安装qemu  sudo apt-get install qemu qtemu1) 创建rootfs imgqemu-img create rootfs.img 5G mkfs.ext3 -b 2048 rootfs.img sudo mount -o loop rootfs.img /mnt2) 创建根文件系统没有?在虚拟机内安装一个精简的Ubuntu算了….3)启动qemu  (-S 让qemu停止,并等待gdb的链接)qemu -kernel export/common_pc-bzImage-WR2.0zz_cgl -hda rootfs.img -append “root=/dev/hda” -S4) 在qemu窗口输入ctrl+alt+2  切换到qemu 控制台输入gdbserver 64435) 启动gdbgdb common_pc-vmlinux-symbols-WR2.0zz_cgl>target remote  127.0.0.1:6443> b start_kernel> c   6)tips—比如设置了运行b fork, 在启动的时候可以c 50, 代表忽略50各种break point.  —Ctrl+C 即可停止内核运行, bt可以看到当前运行的函数

赞(0) 打赏
转载请注明出处:服务器评测 » Qemu kgdb调试内核
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏