GDB调试qemu-kvm

前面几篇博文都是记录一些kvm相关包编译安装及使用,但都没深入去代码看看。看源码在配合上相关原理才能更好的理解kvm。但qemu-kvm的代码量很多,对我来讲直接看源码收获甚少,所以找了个调试工具——GDB来配合阅读代码。接下来记录下GDB的使用。

1、qemu-kvm添加debug参数

http://www.cnblogs.com/grglym/p/7896266.html

上面链接的这篇博文中已经有提到编译安装qemu-kvm了,这里就不在记录。主要不同的是为了实现debug,需要在./configure时添加debug的相关配置参数;

./configure --prefix=/usr --enable-debug-tcg --enable-debug

  

图 1

make
make install

2、开启GDB调试

执行如下指令开启调试,指令中qcow2文件执行创建。如图2所示

gdb --args qemu-system-x86_64 -m 1024 -hda test1.qcow2 -cdrom ubuntu-14.04.5-desktop-amd64.iso -boot d --nographic

 

图 2

3、断点设置

首先需要在源码中找到你想查看的函数名,然后在(gdb)中输入

break 函数名

这样既可实现断点设置,如图3所示。

图 3

设置完断点后,可输入start开启调试, 输入字符“c”是继续执行;输入layout src则是查看源代码。

图 4

图 5

4、总结

以上即为利用GDB来调试qemu-kvm的过程,显然调试过程还不是很人性化,所以需要在源码里面添加代码作为输出更好的理解代码过程。

GDB调试qemu-kvm的更多相关文章

  1. GDB调试qemu源码纪录

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

  2. 用 gdb 和 qemu 调试 grub

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

  3. QEMU+GDB调试方法

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

  4. gdb调试原理及qemu中的gdbserver

    (一)gdb调试原理 此部分转自:https://blog.csdn.net/u012658346/article/details/51159971     https://www.cnblogs.c ...

  5. 在qemu环境中用gdb调试Linux内核

    简介 对用户态进程,利用gdb调试代码是很方便的手段.而对于内核态的问题,可以利用crash等工具基于coredump文件进行调试.其实我们也可以利用一些手段对Linux内核代码进行gdb调试,qem ...

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

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

  7. 调试qemu

    最近需要给libvirt增加一个新feature,该feature基于qemu的最新代码. 我需要关心的: http://wiki.qemu.org/Features/Migration 需要自己编译 ...

  8. GDB调试命令小结

    1.启动调试 前置条件:编译生成执行码时带上 -g,如果使用Makefile,通过给CFLAGS指定-g选项,否则调试时没有符号信息.gdb program //最常用的用gdb启动程序,开始调试的方 ...

  9. GDB调试汇编堆栈过程分析

    GDB调试汇编堆栈过程分析 分析过程 这是我的C源文件:click here 使用gcc - g example.c -o example -m32指令在64位的机器上产生32位汇编,然后使用gdb ...

随机推荐

  1. 找工作的程序员必懂的Linux

    一.为什么要学习Linux 首先,我想先说一下:“为什么要学习Linux”?Linux 是什么,它是一款操作系统,是一个支持多用户.多任务.支持多线程和多CPU的操作系统:32位和64位的硬件可以在L ...

  2. Dirichlet's Theorem on Arithmetic Progressions POJ - 3006 线性欧拉筛

    题意 给出a d n    给出数列 a,a+d,a+2d,a+3d......a+kd 问第n个数是几 保证答案不溢出 直接线性筛模拟即可 #include<cstdio> #inclu ...

  3. 51Nod1824 染色游戏 【Lucas定理】【FMT】【位运算】

    我的FMT是在VFleaKing的论文中学到的.51Nod的评测机好恶心. 题目分析: 题目很明显是要你求一个类似卷积的式子.但是我们可以注意到前面具有组合数,如果拆成阶乘会很大,在模意义下你无法判断 ...

  4. Python可迭代对象中的添加和删除(add,append,pop,remove,insert)

    list: classmates = ['Michael', 'Bob', 'Tracy'] classmates.append('Adam') //添加在末尾,没有add()方法 classmate ...

  5. 【XSY1098】第k小 可持久化trie

    题目描述 给你一个长度为\(n\)数列\(a\),有\(m\)次操作: \(1~x\):把所有数异或\(x\) \(2~x\):把所有数与\(x\) \(3~x\):把所有数或\(x\) \(4~l~ ...

  6. npm 淘宝源

    --------- npm: 淘宝源设置:npm config set registry https://registry.npm.taobao.org

  7. Linux 检查端口gps命令

    由于是游戏业务,环境主要是Nginx+Tomcat+Java Program gps脚本环境以及效果图如下: #!/bin/bash function Printf (){ == ];then pri ...

  8. Hdoj 1058.Humble Numbers 题解

    Problem Description A number whose only prime factors are 2,3,5 or 7 is called a humble number. The ...

  9. Android 开发中 SQLite 数据库的使用

    SQLite 介绍 SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能.此外它还是开源的,任何人都可以使用它.许多开源项目((Mozilla, PHP, ...

  10. html标题、段落、换行与字符实体

    通过 <h1>.<h2>.<h3>.<h4>.<h5>.<h6>,标签可以在网页上定义6种级别的标题.6种级别的标题表示文档的6 ...