共计 758 个字符,预计需要花费 2 分钟才能阅读完成。
如何使用GDB对qemu进行调试:
gdb --arg /opt/qemu-7.2.1/build/x86_64-softmmu/qemu-system-x86_64 -accel kvm -m 4096 -smp 4 -hda /opt/lyy/CentOS7.qcow2 -boot menu=on -bios /opt/seabios/out/bios.bin -d unimp -k en-us -vnc :0 -S
其中:/opt/qemu-7.2.1/build/x86_64-softmmu/qemu-system-x86_64 -accel kvm -m 4096 -smp 4 -hda /opt/lyy/CentOS7.qcow2 -boot menu=on -bios /opt/seabios/out/bios.bin -d unimp -k en-us :是正常qemu启动流程, -vnc表示开启VNC监听,可以使用VNC连接这个虚拟机,端口是5900
-S选项代表运行后暂停QEMU执行。
启动后进入如下界面:
使用gdb命令进行调试,
可以先设置断点:例如
break main
# break 方法名,上述命令代表对main方法进行打上断点
例如我们需要查看vnc_listen_io方法进入时的参数已经栈中函数,可以给vnc_listen_io打上断点:
break vnc_listen_io
查看已经打的断点:
info breakpoints
然后启动我们要调试的程序:
run
一直运行直到下一个断点:
continue
进入下一步:
step
在调试vnc连接过程中,因为qemu启动过程会不停进入,需要run后进行continue等待qemu启动:
启动过后,可以看到5900端口就可以访问了,采用vnc客户端连接vnc 5900端口:
再使用gdb命令bt:查看函数调用堆栈
bt
正文完