我见过最全的剖析QEMU原理的文章

qemu代码分析

qemu中ELF文件的加载

几个关键点,可以设计断点,观察。

$ cat command.gdb
set breakpoint pending on
file bin/debug/native/x86_64-softmmu/qemu-system-x86_64
handle SIGUSR2 noprint nostop
handle SIGUSR1 noprint nostop
# type_init before main
# break type_init
break main
break main_loop
break qemu_init_cpu_loop
# qemu_coroutine_create when bdrv_open
break qemu_coroutine_create
# drive_init_func -> blk_new_open
break qemu_coroutine_new
break qemu_coroutine_enter

# drive_init_func load linux-0.2.img
break bdrv_open_image
break bdrv_open

# rcu, drive_init_func, ide_create_drive, vnc_init_func
# main_loop -> do_spawn_thread -> qemu_thread_create
break qemu_thread_create

# PC hardware initialisation
break pc_init1
# first init cpu, in pc_cpus_init, and start kvm or TCG
# vcpu thread
break qemu_init_vcpu
break kvm_init_vcpu
break kvm_cpu_exec
# then init pci bus
break i440fx_init
# pci_vga_init load pc-bios/vgabios-stdvga.bin
# pc_nic_init load pc-bios/efi-e1000.rom

# io thread
break iothread_complete
break qemu_thread_create

break load_image

# load kernel
break load_linux
break load_aout
break load_at
break load_elf
break load_elf_strerror
break load_image
break load_image_gzipped
break load_image_gzipped_buffer
break load_image_size
break load_image_targphys
break load_ramdisk
break load_uboot_image
break load_uimage

break load_elf_binary
break load_elf
break load_elf_image
break load_elf_64
break load_elf_32
break loader_exec

# pc-bios/bios-256k.bin
# pc-bios/vgabios-stdvga.bin
# pc-bios/efi-e1000.rom
break get_image_size
run /home/shhfeng/qemu/bin/debug/native/linux-0.2.img -vnc 0.0.0.0:1

qemu 调试(二)的更多相关文章

  1. 使用Qemu调试内核

    利用Qemu进行内核源码级调试 http://blog.csdn.net/gdt_a20/article/details/7231652 用Qemu调试Linux内核 http://blog.chin ...

  2. 使用QEMU调试Linux内核代码

    http://blog.chinaunix.net/uid-20729583-id-1884617.html http://www.linuxidc.com/Linux/2014-08/105510. ...

  3. 应用调试(二)GDB

    title: 应用调试(二)GDBdate: 2019/1/17 21:00:10 toc: true 应用调试(二)GDB gdb下载工具安装交叉工具链设置GDB介绍编译GDBtarget/host ...

  4. ubuntu14使用qemu调试linux内核

    # 下载内核源代码编译内核 cd ~/LinuxKernel/ wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.18.6.tar.x ...

  5. 采用大杀招QEMU调试Linux内核代码

    Linux调试内核代码是非常麻烦.它们一般加printk, 或者使用JTAG调试. 这里的方法是使用QEMU为了调试Linux核心. 由于QEMU自己实现gdb server, 它可以容易地使用gdb ...

  6. [转载] Fiddler为所欲为第二篇 像OD一样调试 [二]

    首先,如果大家没有看过第一篇,可以先看看第一篇,了解Fiddler script的脚本哦.传送门:https://www.52pojie.cn/thread-854434-1-1.html 导语:其实 ...

  7. Stetho简化Android调试(二)

    Stetho简化Android调试(一) 一文中讲述了如何使用Stetho结合Chrome远程调试Android App. Stetho给我们调试带来很大的便利,效率显著提升的同时也产生一个问题:如果 ...

  8. gcc gdb调试 (二)

    GDB的命令概貌——————— 启动gdb后,就你被带入gdb的调试环境中,就可以使用gdb的命令开始调试程序了,gdb的命令可以使用help命令来查看,如下所示: /home/hchen> g ...

  9. 用 gdb 和 qemu 调试 grub

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

随机推荐

  1. 稀疏图(邻接链表),并查集,最短路径(Dijkstra,spfa),最小生成树(kruskal,prim)

    全部函数通过杭电 1142,1162,1198,1213等题目测试. #include<iostream> #include<vector> #include<queue ...

  2. 编译gcc4.4.6与ICE遇到的几个问题

    1.遇错./.libs/libgcj.so: undefined reference to `__cxa_call_unexpected' 解决:d.错误码:"/.libs/libgcj.s ...

  3. jQuery学习-事件之绑定事件(一)

    我们都知道jQuery的事件其思想来源于Dean Edwards的addEvent,通过源码我们知道jQuery在为元素绑定事件时,每种类型的事件(click,blur)时只绑定了一次对应类型的事件处 ...

  4. Xlint以及Java Lint 选项

    Java Lint 选项 Java 编译器的选项包括所谓的标准选项和非标准选项.标准选项是指在当前版本的开发环境中支持,且在未来版本中也将被支持的选项.常用的标准选项比如 -classpath 以及 ...

  5. 单个H扩展到多个H时,机器学习的保证

    1.差的数据集的概念BAD D 单个H,在抽出的样本(数据集上),满足 $P(|E_{in}-E_{out}|>\epsilon)\leq 2e^{-2\epsilon^2N}$ 考虑以下情况, ...

  6. AndroidUI 视图动画-旋转动画效果 (RotateAnimation)

    RotateAnimation,能实现Android的视图的旋转效果,废话不多说直接上代码. 新建一个Android 项目,在activity_main.xml中添加一个按钮,然后使用Relative ...

  7. aui

    #encoding:utf-8import wximport wx.auiclass MyFrame(wx.Frame): def __init__(self, *args, **kwargs): w ...

  8. jQuery插件

    1. Lightbox 2:    Lightbox 2 是一款很酷的图片显示插件,可以在一个平滑展开的新窗口中展现出图片,而同时页面的其余部分都变成黑色背景.使用这款插件,是为了当你的的图片过大必须 ...

  9. 设置dialog显示,自定义时间到后dialog消失

    方法一: public class MyDialog extends Dialog { private int FLAG_DISMISS = 1; private boolean flag = tru ...

  10. 如何更快速加载你的JS页面

    确保代码尽量简洁 不要什么都依赖JavaScript.不要编写重复性的脚本.要把JavaScript当作糖果工具,只是起到美化作用.别给你的网站添加大量的JavaScript代码.只有必要的时候用一下 ...