qemu使用快照来保存现场,以备后面debug

背景

在编写项目的时候需要用qemu来跑,大部分是正常的,但偶现一些bug,需要用gdb来调,但不能每次都用qemu跑,直到跑出来想要调的bug再调,费时费力。所以希望能有快照功能,在出现bug的时候直接保存现场,以后需要调的时候直接读取快照即可。

解决方案

使用qemu monitor的savevm功能保存快照,配合gdb进行调试。

使用qemu-img生成qcow2镜像

要想保存快照,读取快照,首先需要一个镜像来支持它们,这里使用qemu的qcow2镜像。
qemu-img create -f qcow2 test.qcow2 32M
test.qcow2为自己想要设置的镜像名字,后面可以加上希望的size,我这里设置的32M。
(平常出现的Error: No block device can accept snapshots问题就是没有镜像导致的)

qemu命令更新

在原有的qemu命令基础上,加上-drive if=none,format=qcow2,file=test.qcow2即可。

保存快照

出现bug或是希望保存快照的时候,ctrl+a c调出qemu monitor,使用savevm snapshot1即可保存快照,snapshot1为你希望保存的快照名称。
在qemu monitor中使用info snapshots可以查看当前所有快照信息。

读取快照

在加上-drive的qemu命令基础上,使用-loadvm snapshot1选项来加载快照。

继续完成工作

以我为例,加载完快照继续使用-s -S配合gdb调试即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值