最近需要给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

调试qemu的更多相关文章

  1. GDB调试qemu源码纪录

    今天介绍下如何利用gdb调试qemu 1.首先获取qemu源码 获取地址:https://www.qemu.org/ 2.编译安装qemu 进入qemu目录 ./configure --enable- ...

  2. linux内核调试+qemu+eclipse【转】

    本文转载自:https://blog.csdn.net/WANG__RONGWEI/article/details/54922727 一.调试环境: 在ubuntu16.04下,在虚拟机里边运行的ub ...

  3. qemu 源码调试

    1:下载最新的QEMU源码 git clone https://github.com/qemu/qemu.git 2:对qemu进行编译 ./configure --prefix=/usr --lib ...

  4. 用 gdb 和 qemu 调试 grub

    因为qemu内置了gdbserver,所以我们可以用gdb调试qemu虚拟机上执行的代码,而且不受客户机系统限制. 以下内容是我调试 grub 0.97 时的一份笔记. 准备 qemu, gdb,以及 ...

  5. QEMU+GDB调试方法

    两年前调试usb/ip开源项目时,就曾用虚拟机远程调试过Windows和Linux系统内核,当时在VMware Workstation上创建两个虚拟机进行调试,也没有记录下如何配置调试,只是大体的还记 ...

  6. 理解 QEMU/KVM 和 Ceph(2):QEMU 的 RBD 块驱动(block driver)

    本系列文章会总结 QEMU/KVM 和 Ceph 之间的整合: (1)QEMU-KVM 和 Ceph RBD 的 缓存机制总结 (2)QEMU 的 RBD 块驱动(block driver) (3)存 ...

  7. Linux内核设计第三周——构造一个简单的Linux系统

    Linux内核设计第三周 ——构造一个简单的Linux系统 一.知识点总结 计算机三个法宝: 存储程序计算机 函数调用堆栈 中断 操作系统两把宝剑: 中断上下文的切换 进程上下文的切换 linux内核 ...

  8. 20135220谈愈敏Blog8_进程的切换和系统的一般执行过程

    进程的切换和系统的一般执行过程 谈愈敏 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-100002 ...

  9. 20135220谈愈敏Blog7_可执行程序的装载

    可执行程序的装载 谈愈敏 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 一. ...

随机推荐

  1. mudOS配置

    # 本泥巴的名称name : new夕阳再现# 定义用来接受玩家连线的端口#单端口 port number : XXXX#双端口如下:external_port_1 : telnet 10010ext ...

  2. php redis数据库操作类

    <?php namespace iphp\db; use iphp\App; /** * redis操作类 * 说明,任何为false的串,存在redis中都是空串. * 只有在key不存在时, ...

  3. arrowTip 提示

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. 解析Tensorflow官方English-Franch翻译器demo

    今天我们来解析下Tensorflow的Seq2Seq的demo.继上篇博客的PTM模型之后,Tensorflow官方也开放了名为translate的demo,这个demo对比之前的PTM要大了很多(首 ...

  5. jQuery创建节点

    注:摘自<锋利的jQuery(第二版)> 创建元素节点 例如要创建两个<li>元素节点,并且要把它们作为<ul>元素节点的子节点添加到DOM节点树上.完成这个任务需 ...

  6. Gentoo Linux 学习笔记2

         在RHEL系列的Linux操作系统中,可以通过rpm -ql package的方式来查看这个软件包共有哪一些文件所构成.在Gentoo下,也有这样的工具,equery.要使用这个工具,首先要 ...

  7. 使用扩展名获取mimetype

    在Android中很多时候我们需要计算出文件的mimetype,而我们通常的思路就是通过扩展名来获取对应的mimetype,而如果自行处理,将维护一个比较大的映射表,而实际上大可不必,Android提 ...

  8. Java面试题之weblogic相关问题

    WebLogic是美国Oracle公司出品的一个application server确切的说是一个基于JAVAEE架构的中间件,BEA WebLogic是用于开发.集成.部署和管理大型分布式Web应用 ...

  9. SecureCRT 绝佳配色方案, 保护你的眼睛(转发)

    SecureCRT 绝佳配色方案, 保护你的眼睛 关键词:SecureCRT配色, SecureCRT设置颜色, Linux终端配色,Linux终端颜色设置. 终端有一个好的配色,不仅能保护自己的眼睛 ...

  10. NSThread 的用法

    一.线程的注意点: 1.不要同时开太多的线程(最多不要超过5条,其中包括主线程) 2.线程概念 2.1.主线程:UI 线程,显示.刷新 UI 界面,处理 UI 控件的事件 2.2.子线程:后台线程,异 ...