Virtual machine 如何访问从QEMU开始的虚拟机?

Virtual machine 如何访问从QEMU开始的虚拟机?,virtual-machine,qemu,kvm,xen,Virtual Machine,Qemu,Kvm,Xen,我希望我能连接到由QEMU启动的虚拟机 然后我应该提取有关寄存器的信息(EIP、EBP等) 在XEN中,有函数get\u vcpu\u context,还有其他函数,您可以通过这些函数分别连接到每个虚拟机 QEMU是否有任何此类支持,我在哪里可以找到QEMU超级调用文档?您有两种选择: 您可以连接到QEMU gdbstub并使用GDB远程协议来查询CPU状态。这可能是最可靠的方法 您可以连接到QEMU监视器并使用“info registers”命令。请注意,尽管QEMU版本之间的输出格式可能会

我希望我能连接到由QEMU启动的虚拟机

然后我应该提取有关寄存器的信息(EIP、EBP等)

在XEN中,有函数
get\u vcpu\u context
,还有其他函数,您可以通过这些函数分别连接到每个虚拟机


QEMU是否有任何此类支持,我在哪里可以找到QEMU超级调用文档?

您有两种选择:

  • 您可以连接到QEMU gdbstub并使用GDB远程协议来查询CPU状态。这可能是最可靠的方法
  • 您可以连接到QEMU监视器并使用“info registers”命令。请注意,尽管QEMU版本之间的输出格式可能会发生变化(它是供人使用的,而不是供其他程序使用),因此它的长期可靠性不如使用GDB远程协议

如果在加载虚拟机时传入网络参数,则可以通过ssh连接到虚拟机。我知道这一点,但我希望以特定频率获取vcpu的状态。我需要写一个C程序来调用QEMU的一些API,但是我没有找到任何关于这个的文档。谢谢你的回答,但是我正在寻找更独立的东西。我想写一个C程序来列出所有以qemu启动的虚拟机并获取它们的状态。qemu根本不维护虚拟机列表——它只是运行一个VM的程序。如果您使用像libvirt这样的“管理层”程序,它将有API或命令行程序来查询它所管理的VM。