调试qemu

最近需要给libvirt增加一个新feature,该feature基于qemu的最新代码。

我需要关心的: http://wiki.qemu.org/Features/Migration

需要自己编译qemu,登录qemu的 官网,做一下总结。

clone qemu 代码: [org_ref]:  http://wiki.qemu.org/Download 

配置编译过程如下:  [org_ref]:  http://wiki.qemu.org/Hosts/Linux 

 

1. qemu linux用户态,模拟测试

 [org_ref]:  http://wiki.qemu.org/Testing  介绍测试的步骤,还提供了各种平台的镜像。

 [guest img]:  http://wiki.qemu.org/download/linux-0.2.img.bz2   这个事x86的一个镜像,8M。

 $ wget  http://wiki.qemu.org/download/linux-0.2.img.bz2  -o ~/linux-0.2.img.bz2

$ cd ~;  bzip2 -d ~/linux-0.2.img.bz2

2. 调试qemu本身

 [org_ref]:  http://wiki.qemu.org/Features/Tracing   Stefan 维护的。跟大家一年入职IBM的,现在已经expert了。

 [org_ref]:  http://wiki.qemu.org/Debugging_with_Valgrind  

 ubuntu 11.10 安装systemtap

使用gdb:   

$ vi  command.gdb

set breakpoint pending on
file x86_64-softmmu/qemu-system-x86_64

#file bin/debug/native/x86_64-softmmu/qemu-system-x86_64
handle SIGUSR2 noprint nostop
handle SIGUSR1 noprint nostop
break type_init
break main_loop
break vl.c:2842
run ~/linux-0.2.img -vnc 0.0.0.0:1

$ gdb  -x command.gdb

gdb 自定义command

3. qemu + GDB 调试 guest 内核。

 [org_ref]:    http://wiki.qemu.org/Documentation/Debugging

官网 英文没有 具体步骤。 介绍了方法。

具体步骤, 网上中文的文章很多。

[ref]:  http://bbs.chinaunix.net/thread-1973646-1-1.html    

          http://blog.chinaunix.net/uid-20778443-id-94577.html

         http://blog.csdn.net/iamljj/article/details/5655169  步骤详细。

大概的步骤如下:

1. 安装QEMU,安装个LINUX虚拟机。被调试的是虚拟机。
2. 重新编译虚拟机里LINUX KERNEL,打开DEBUG相关设置,具体设置可以看LDD3的第四章
3. 用QEMU 启动被调试的虚拟机的时候,加上 -S 参数。注意是大写S,表示虚拟机一启动起来就先暂停(SUSPEND).
4. 选中QEMU那个虚拟机,按 CTL+ALT+2切换到控制窗口,然后输入
gdbserver 1234. 意思是启动GDBSERVER,同时端口为1234。然后这时可以按c, 让QEMU继续运行。然后按CTRL+ALT+1 切换回虚拟机本身的>显示。
5. 在HOST(主机)上面启动一个GDB。如果要看LINUX KERNEL SYMBOL的话,最好在和虚拟机里编译LINUX KERNEL同样的路径上放上KERNEL>的源码。
在启动GDB 的时候,用 gdb vmlinux 来启动。其中的vmlinux 是没压缩过,并且带符号表的格式,大小应该为30M 以上。
6. 在GDB 里,输入 target remote localhost:1234。 这里的1234是和QEMU里的设置相对应。
7. 回车,这时虚拟机应该被停了下来,同时在GDB里会显示一些随机的源码,显示GDB停在了什么地方。
8. 这时,在GDB里,可以用b xxx设置断点,然后按c继续运行。
9. 如果虚拟机已经运行了一半,这时想停下来加断点,可以在GDB里按CTRL+C.

 

刘军卫 建议 使用: insight 调试。 这哥们移动研究院的, 很活跃,写了很多qemu分析的文章

[insight 调试]: http://blog.163.com/jianlizhao%40126/blog/static/173251163201222193227915/

 

开发者关心的:  

    [org_ref]:  http://wiki.qemu.org/Contribute/StartHere

    [org_ref]:  http://wiki.qemu.org/Documentation/GettingStartedDevelopers

posted @ 2015-05-27 09:09  lvmxh  阅读(1486)  评论(0编辑  收藏  举报