我使用Gdb跟踪Qemu中虚拟机管理程序OS的执行(断点,单步执行...),到目前为止,它运行良好。
> special_function(df, "NewVariableName", "a", "b", "c")
NewVariableName
1 3.0
2 0.2
3 0.5
现在,我需要跟踪虚拟机管理程序中来宾OS的执行情况,这些都由Qemu运行。而且它不起作用。 但是我添加了与操作系统有关的调试符号文件,并且还修改了指令的体系结构。
qemu-system-x86_64 -enable-kvm -display sdl -cpu host -serial my: stdio -m 8192 --bios ../../tool/boot/tianocore.bin -drive format = raw, file = var / run /hypervisor.img -machine q35 -s -S
gdb path/to/hypervisor
target remote: 1234
但是,当执行通过vmresume,vmlauch指令并继续在客户机OS中执行时,Gdb会感到困惑,单步执行不再有效,并且断点最终到达不确定的地址。
有谁知道我错过了什么?
还是真的不可能?
还有另一种方法可以实现这一目标吗?
我正在使用的管理程序是Genode,来宾操作系统是T inycore Linux。