最近需要给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. I/O浅析

    1.为什么需要I/O? 因为程序需要从别的文件中获取内容或者程序要将自身的内容传入到文件中. 2.流种类的概述 1.字节流和字符流 字节流的基础单位是byte                  字符流 ...

  2. Python成长之路第一篇(2)-初识列表和元组

    可以将列表和元组当成普通的“数组”,他能保存任意数量任意类型的Python对象,和数组一样都是通过数字0索引访问元素,列表和元组可以存储不同类型的对象,列表和元组有几处重要区别.列表元素用([])包括 ...

  3. Java 中使用Jackson反序列化

    Build.gradle: compile group: 'org.codehaus.jackson', name: 'jackson-mapper-lgpl', version: '1.9.13' ...

  4. Amazon MWS 上传数据 (二) 构造请求

    上一篇文章提到了Amazon 上传数据有三个步骤,但是每个步骤都需要构造服务和构造请求,服务是一样的,请求各不相同:这个很容易理解,这三个步骤都需要和Amazon服务器交互,所以他们的服务构造是一样的 ...

  5. SQL Server 数据库状态选项

    选项 1. single_user(单用户),multi_user(多用户),restricted_user(受限用户); 描述数据库的用户访问属性,它们互斥,设置其中任何一个选项就会取消对其它选项的 ...

  6. SQL Server 文件流文件组

    背景: 文件流通过在文件系统上存储blob数据文件将数据库引擎与ntfs文件集成在一起,使用t-sql和win32访问数据. 文件流使用windows系统来缓存数据,有助于在减少文件流数据对sql s ...

  7. 实用chrome插件

    2015年最实用的9款chrome插件 随着14年chrome浏览器的市场超过IE浏览器,chrome凭借它强劲性能和出色的使用体验真正的登上了平民级的殿堂.今天小编就为大家推荐9款自己常用的chro ...

  8. 新手必看:如何快速看懂VC++项目

    1.在具备必需的编程基础知识后,试图理解一份完整的代码可以从以下几个方面入手:   1)首先运行以下程序,从外部角度感受一下有哪些功能.  2)了解代码中每个类的功能.看看文档,或者类的注释,那么仅仅 ...

  9. Thrift入门 (一)

    Install Go to thrift page download thrift. 1 2 3 4 brew install boost ./configure --without-python s ...

  10. 使用 Node.js 做 Function Test

    Info 上周 meeting 上同事说他们现在在用 java 写 function test,产生了很多冗余的代码,整个项目也变得比较臃肿.现在迫切需要个简单的模板项目能快速搭建function t ...