Debugging 如何在Xen下调试QEMU?

Debugging 如何在Xen下调试QEMU?,debugging,qemu,Debugging,Qemu,我正在运行Xen服务器,我想调试QEMU进程。但是,我不想单独运行QEMU进程,但我希望它运行以支持我的domU 在这种情况下,如何运行和调试QEMU?这个答案描述了两种可能的方法。希望其他人能分享更多的方法 初步说明:要有一个调试友好的QEMU构建,请使用--enable debugconfig选项 由于hypervisor和QEMU之间的集成,在Xen下调试QEMU有点奇怪。如果您不想独立运行QEMU(无加速),Xen下的唯一选择是使用Xen作为加速器,因为KVM将无法工作 要做到这一点,我

我正在运行Xen服务器,我想调试QEMU进程。但是,我不想单独运行QEMU进程,但我希望它运行以支持我的domU


在这种情况下,如何运行和调试QEMU?

这个答案描述了两种可能的方法。希望其他人能分享更多的方法

初步说明:要有一个调试友好的QEMU构建,请使用
--enable debug
config选项

由于hypervisor和QEMU之间的集成,在Xen下调试QEMU有点奇怪。如果您不想独立运行QEMU(无加速),Xen下的唯一选择是使用Xen作为加速器,因为KVM将无法工作

要做到这一点,我认为不可能从命令行手动运行QEMU,但必须在启动domU时让Xen启动进程。然后,您可以使用以下两个选项之一:

  • 通过Xen(
    xl create…
    )启动VM,然后通过命令行将其附加到Xen已启动的QEMU进程,使用
    gdb
  • 在VM的Xen配置中更改
    device\u model\u override
    ,以指向包含类似
    exec gdbserver:1234/path/to/qemu$@
    的脚本-然后您可以像上面那样启动VM(通过Xen),并使用
    gdb
    中的
    目标远程:123
    ”来连接到调试会话
  • 如果
    xl create-p…
    不起作用,则在查看启动早期发生的崩溃时,选项2特别有用,因为无论Xen VM是正在运行还是暂停,它都会崩溃。如果您想将额外的环境变量传递给QEMU,它也很有用。这有时在调试中也很有用

    您的脚本可能如下所示:

    !/bin/bash
    QEMU#LOG=/var/LOG/xen/QEMU-LOG-debug.LOG#自定义日志文件
    导出SSLKEYLOGFILE=/tmp/qemu-debug-ssl-key.log#额外的环境变量
    导出GNUTLS_DEBUG_LEVEL=4#额外的环境变量
    导出XEN_QEMU_控制台限制=0#额外环境变量
    exec gdbserver 0.0.0.0:1234/path/to/qemu-xen/qemu-system-i386$@&>“$qemu\u LOG”