最近需要给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. ecshop使用Google API及OAuth2.0登录授权(PHP)

    一.申请clientID https://console.developers.google.com/project 二.开启Google+ API权限 https://console.develop ...

  2. Linux 下搭建ftp服务器 指定用户指定目录及其他操作

    搭建 Linux下 rpm -qa |grep vsftpd查看是否安装 没安装yum安装 /etc/vsftpd/目录下有vsftpd.conf配置文件 根据需求 进行配置  是否使用匿名用户以及文 ...

  3. 关于异常Microsoft.CSharp.RuntimeBinder.RuntimeBinderException

    原文:关于异常Microsoft.CSharp.RuntimeBinder.RuntimeBinderException 关于Microsoft.CSharp.RuntimeBinder.Runtim ...

  4. PLA 多维情况下的vc维

    对于d维的数据集,vc = d+1 证明: $vc \geq d+1$  :  存在d+1个点可以被H shatter 构造矩阵(注意加上$w_0$对应的$x_0$) 注意x可逆,构造$w=X^{-1 ...

  5. 【POJ】2318 TOYS ——计算几何+二分

    TOYS Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 10281   Accepted: 4924 Description ...

  6. Linux学习笔记3-VI 和 VIM的使用

    vi: Visual Interface vim: VI iMproved 全屏编辑器, Linux系统下最强大的两款编辑器,vi和vim,vi是Linux本身自带的一款编辑器,纯文本编辑不带任何效果 ...

  7. position:relative可以默认提升元素的z-index;

    position:relative可以默认提升元素的z-index; 相对没有添加position的元素来说:

  8. (转)iOS 开发,工程中混合使用 ARC 和非ARC

    [前提知识] ARC:Automatic Reference Counting,自动引用计数 在开发 iOS 3 以及之前的版本的项目时我们要自己负责使用引用计数来管理内存,比如要手动 retain. ...

  9. VB.NET的反射机制

    1.前提 Net的应用程序由几个部分:‘程序集’.‘模块’.‘类型’组成. 装配件是.Net应用程序执行的最小单位,编译出来的.dll..exe都是装配件. 2.概念 反射是获得运行时类型的方式. 概 ...

  10. uva 10051 Tower of Cubes(DAG最长路)

    题目连接:10051 - Tower of Cubes 题目大意:有n个正方体,从序号1~n, 对应的每个立方体的6个面分别有它的颜色(用数字给出),现在想要将立方体堆成塔,并且上面的立方体的序号要小 ...