欢迎光临散文网 会员登陆 & 注册

[QEMU]调试/专家选项(2)

2022-07-30 09:18 作者:-小白之家-  | 我要投稿
  • -parallel dev

  • 将虚拟并行端口重定向到主机设备开发(与串行端口相同的设备)。在 Linux 主机上,可以使用硬件设备连接到相应的主机并行端口。/dev/parportN

    此选项可多次用于模拟最多 3 个并行端口。

    用于禁用所有并行端口。-parallel none

  • -monitor dev

  • 将监视器重定向到主机设备开发(与串行端口相同的设备)。默认设备处于图形模式和非图形模式。用于禁用默认监视器。vcstdio-monitor none

  • -qmp dev

  • 像 -monitor 一样,但在“控制”模式下打开。

  • -qmp-pretty dev

  • 像-qmp一样,但使用漂亮的JSON格式。

  • -mon [chardev=]name[,mode=readline|control][,pretty[=on|off]]

  • 在 chardev 名称上设置监视器。 配置QMP监视器(JSON RPC样式的协议),它与具有“(qemu)”提示符的人工监视器HMP不同。 仅在 以下情况下有效,打开 JSON 漂亮打印以方便人工阅读和调试。mode=controlprettymode=control

  • -debugcon dev

  • 将调试控制台重定向到主机设备开发(与串行端口相同的设备)。调试控制台是一个I / O端口,通常是端口0xe9;写入该 I/O 端口,将输出发送到此设备。默认设备处于图形模式和非图形模式。vcstdio

  • -pidfile file

  • 将 QEMU 进程 PID 存储在文件中。如果从脚本启动 QEMU,这将非常有用。

  • -singlestep

  • 在单步模式下运行仿真。

  • --preconfig

  • 在创建计算机之前暂停 QEMU 以进行交互式配置,这允许查询和配置将影响计算机初始化的属性。使用 QMP 命令 'x-exit-preconfig' 退出预配置状态并移动到下一个状态(即,如果未使用 -S,则运行来宾,如果使用 -S,则暂停第二次)。此选项是实验性的。

  • -S

  • 不要在启动时启动 CPU(必须在监视器中键入“c”)。

  • -overcommit mem-lock=on|off


  • -overcommit cpu-pm=on|off

  • 运行 qemu 并提示主机资源过度使用。默认设置是假定主机过度提交所有资源。

    锁定 qemu 和来宾内存可以通过启用(默认情况下禁用)。当主机内存未过度使用时,此方法有效,并减少了来宾的最坏情况延迟。mem-lock=on

    可以通过(默认情况下禁用)启用来宾管理主机 CPU 电源状态的功能(增加同一主机 CPU 上其他进程的延迟,但减少来宾的延迟)。当主机 CPU 未过度使用时,此方法效果最佳。使用时,主机对 CPU 周期和电源利用率的估计将不正确,而不考虑来宾空闲时间。cpu-pm=on

  • -gdb dev

  • 在设备 dev 上接受 gdb 连接(请参阅《系统仿真用户指南》中的 GDB 用法章节)。请注意,此选项不会暂停 QEMU 执行 – 如果您希望 QEMU 在连接 gdb 并发出命令之前不启动来宾,则还需要将该选项传递给 QEMU。continue-S

    最常见的配置是侦听本地 TCP 套接字:

    -gdb tcp::3117

    但您可以指定其他后端;UDP,伪TTY,甚至stadio都是合理的用例。例如,stdio 连接允许您从 gdb 中启动 QEMU 并通过管道建立连接:

    (gdb) target remote | exec qemu-system-x86_64 -gdb stdio ...

  • -s

  • -gdb tcp::1234 的简写,即在 TCP 端口 1234 上打开 gdb 服务器(请参阅《系统仿真用户指南》中的 GDB 用法章节)。

  • -d item1[,...]

  • 启用指定项的日志记录。使用“-d 帮助”获取日志项列表。

  • -D logfile

  • 在日志文件中输出日志,而不是在 stderr 中输出日志

  • -dfilter range1[,...]

  • 将调试输出筛选为与目标地址范围相关的调试输出。筛选器规范可以是开始+ 大小,开始大小或开始。结束,其中开始结束和大小是所需的地址和大小。例如:

    -dfilter 0x8000..0x8fff,0xffffffc000080000+0x200,0xffffffc000060000-0x1000

    将转储0x1000大小的块中任何代码的输出,从0x8000开始,0x200大小的块从0xffffffc000080000开始,另一个0x1000大小的块从0xffffffc00005f000开始。

  • -seed number

  • 强制来宾使用确定性伪随机数生成器,并用数字作为种子。这不会影响主机中的加密例程。

  • -L  path

  • 设置 BIOS、VGA BIOS 和键盘映射的目录。

    要列出所有数据目录,请使用 。-L help

  • -bios file

  • 设置 BIOS 的文件名。

  • -enable-kvm

  • 启用 KVM 完全虚拟化支持。仅当编译时启用了 KVM 支持时,此选项才可用。

  • -xen-domid id

  • 指定 xen 来宾域 ID(仅限 XEN)。

  • -xen-attach

  • 附加到现有的 xen 域。libxl 将在启动 QEMU 时使用它(仅限 XEN)。将一组可用的 xen 操作限制为指定的域 ID(仅限 XEN)。

  • -no-reboot

  • 退出而不是重新启动。

  • -no-shutdown

  • 不要在客户机关闭时退出 QEMU,而只是停止模拟。例如,这允许切换到监视器以提交对磁盘映像的更改。

  • -action event=action

  • action 参数用于在某些来宾事件发生时修改 QEMU 的默认行为。它提供了一个泛型方法,用于指定由 和 参数修改的相同行为。-no-reboot-no-shutdown

    例子:

    -action panic=none -action reboot=shutdown,shutdown=pause -watchdog i6300esb -action watchdog=pause

  • -loadvm file

  • 立即以保存的状态开始(在监视器中)loadvm

  • -daemonize

  • 初始化后守护 QEMU 进程。QEMU 不会从标准 IO 中分离,直到它准备好接收其任何设备上的连接。此选项是外部程序启动 QEMU 的有用方法,无需处理初始化争用条件。

  • -option-rom file

  • 将文件内容作为选项ROM加载。此选项对于加载EtherBoot之类的东西很有用。

  • -rtc [base=utc|localtime|datetime][,clock=host|rt|vm][,driftfix=none|slew]

  • 指定为 或,让 RTC 分别在当前 UTC 或本地时间启动。 对于 MS-DOS 或 Windows 中的正确日期是必需的。要从特定时间点开始,请以 或 的格式提供日期时间。默认基数为 UTC。baseutclocaltimelocaltime2006-06-17T16:01:212006-06-17

    默认情况下,RTC 由主机系统时间驱动。这允许将RTC用作来宾内部的精确参考时钟,特别是如果主机时间平滑地遵循精确的外部参考时钟,例如通过NTP。如果要将来宾时间与主机隔离,可以设置为 改用,如果主机支持,这将提供主机单调时钟。为了防止RTC在挂起期间进行,您可以设置为(虚拟时钟)。建议使用 '',特别是在 icount 模式下,以保持确定性;但是,请注意,在 icount 模式下,虚拟时钟的速度是可变的,通常可能与主机时钟不同。clockrtclockvmclock=vm

    启用(仅限 i386 目标)如果您遇到时间偏移问题,特别是 Windows 的 ACPI HAL。此选项将尝试找出 Windows 来宾未处理多少个计时器中断,并将重新注入这些中断。driftfix

  • -icount [shift=N|auto][,align=on|off][,sleep=on|off][,rr=record|replay,rrfile=filename[,rrsnapshot=snapshot]]

  • 启用虚拟指令计数器。虚拟 CPU 将每 2^Nns 的虚拟时间执行一条指令。如果指定,则虚拟 CPU 速度将自动调整,以保持虚拟时间在实时的几秒钟内。auto

    请注意,虽然此选项可以提供确定性行为,但它不提供周期精确的仿真。现代 CPU 包含具有复杂缓存层次结构的超标量无序内核。执行的指令数量通常与实际性能几乎没有相关性。

    当虚拟 CPU 处于休眠状态时,除非指定,否则虚拟时间将以默认速度前进。使用 ,每当虚拟 CPU 进入睡眠模式时,虚拟时间将立即跳转到下一个计时器截止时间,如果未启用计时器,则虚拟时间将不会前进。从来宾的角度来看,此行为提供了确定性的执行时间。如果启用了 icount,则缺省值为 。 不能与 或 一起使用。sleep=onsleep=onsleep=offsleep=onshift=autoalign=on

    align=on将激活延迟算法,该算法将尝试同步主机时钟和虚拟时钟。目标是让来宾以 shift 选项施加的实际频率运行。每当来宾时钟落后于主机时钟并且如果指定时,我们就会向用户打印一条消息以通知延迟。目前,当 is 时,此选项不起作用。注意:同步算法将适用于来宾时钟在主机时钟之前运行的班次值。通常,当移位值较高时会发生这种情况(高多少取决于主机)。如果启用了 icount,则缺省值为 。align=onshiftautoalign=off

    指定该选项后,将启用确定性记录/重播。还必须提供该选项来指定重播日志的路径。在记录模式下,数据将写入此文件,在重播模式下,数据将被读回。如果给定该选项,则指定 VM 快照名称。在记录模式下,在执行记录开始时会创建具有给定名称的新 VM 快照。在重播模式下,此选项指定用于加载初始 VM 状态的快照名称。rrrrfile=rrsnapshot

  • -watchdog model

  • 创建虚拟硬件看门狗设备。启用(通过来宾操作)后,监视器必须由来宾内部的代理定期轮询,否则来宾将重新启动。选择来宾具有驱动程序的型号。

    该模型是要模拟的硬件看门狗的模型。用于列出可用的硬件型号。只能为一个来宾启用一个监视器。-watchdog help

    可能提供以下型号:

    • ib700

    • iBASE 700 是一款非常简单的 ISA 看门狗,只有一个计时器。

    • i6300esb

    • 英特尔 6300ESB I/O 控制器中枢是一款功能更强大的基于 PCI 的双定时器看门狗。

    • diag288

    • 由诊断 288 超级呼叫(目前仅限 KVM)支持的 s390x 虚拟看门狗。

  • -watchdog-action action

  • 该操作控制 QEMU 在监视程序计时器过期时将执行的操作。默认值为(强制重置来宾)。其他可能的操作包括:(尝试正常关闭客户机)、(强制关闭客户机电源)、(将 NMI 注入客户机)、(暂停客户机)、(打印调试消息并继续)或(不执行任何操作)。resetshutdownpoweroffinject-nmipausedebugnone

    请注意,该操作要求来宾响应 ACPI 信号,在监视器已过期的情况下,它可能无法执行此操作,因此不建议用于生产用途。shutdown-watchdog-action shutdown

    例子:

    -watchdog i6300esb -watchdog-action pause-watchdog ib700

  • -echr numeric_ascii_value

  • 更改使用监视器和串行共享时用于切换到监视器的转义字符。默认值为使用该选项时。 等于按 。您可以从 ascii 控制键中选择其他字符,其中 1 到 26 通过 Control-z 映射到 Control-a。例如,您可以使用以下任一方法将转义字符更改为 Control-t。0x01-nographic0x01Control-a

    -echr 0x14-echr 20

  • -incoming tcp:[host]:port[,to=maxport][,ipv4=on|off][,ipv6=on|off]


  • -incoming rdma:host:port[,ipv4=on|off][,ipv6=on|off]

  • 准备传入迁移,侦听给定的 tcp 端口。

  • -incoming unix:socketpath

  • 准备传入的迁移,侦听给定的 unix 套接字。

  • -incoming fd:fd

  • 接受来自给定文件描述符的传入迁移。

  • -incoming exec:cmdline

  • 接受传入迁移作为指定外部命令的输出。

  • -incoming defer

  • 等待通过migrate_incoming指定 URI。监视器可用于在发出migrate_incoming以允许开始迁移之前更改设置(如迁移参数)。

  • -only-migratable

  • 仅允许可迁移的设备。不允许设备进入不可迁移状态。

  • -nodefaults

  • 不要创建默认设备。通常,QEMU设置默认设备,如串行端口,并行端口,虚拟控制台,监控设备,VGA适配器,软盘和CD-ROM驱动器等。该选项将禁用所有这些默认设备。-nodefaults

  • -chroot dir

  • 在开始来宾执行之前,立即将 chroot 连接到指定的目录。与 -runas 结合使用特别有用。

  • -runas user

  • 在开始客户机执行之前,立即删除 root 权限,切换到指定的用户。

  • -prom-env variable=value

  • 将 OpenBIOS nvram 变量设置为给定值(仅限 PPC,SPARC)。

    qemu-system-sparc -prom-env 'auto-boot?=false' \ -prom-env 'boot-device=sd(0,2,0):d' -prom-env 'boot-args=linux single'qemu-system-ppc -prom-env 'auto-boot?=false' \ -prom-env 'boot-device=hd:2,\yaboot' \ -prom-env 'boot-args=conf=hd:2,\yaboot.conf'

  • -semihosting

  • 启用半主机模式(仅限 ARM、M68K、Xtensa、MIPS、Nios II、RISC-V)。

    请注意,这允许来宾直接访问主机文件系统,因此应仅与受信任的来宾操作系统一起使用。

    有关启用的功能的详细信息,请参阅 -半托管-配置选项文档。

  • -semihosting-config [enable=on|off][,target=native|gdb|auto][,chardev=id][,arg=str[,...]]

  • 启用和配置半主机(仅限 ARM、M68K、Xtensa、MIPS、Nios II、RISC-V)。

    请注意,这允许来宾直接访问主机文件系统,因此应仅与受信任的来宾操作系统一起使用。

    在 Arm 上,它实现了标准的半托管 API 版本 2.0。

    在M68K上,这实现了libgloss使用的“ColdFire GDB”接口。

    Xtensa 半托管提供基本的文件 IO 调用,例如打开/读/写/查找/选择。Tensilica baremetal libc for ISS 和 linux 平台 “sim” 使用此接口。

    在RISC-V上,它实现了标准的半托管API版本0.2。

    • target=native|gdb|auto

    • 定义将向 QEMU () 或 GDB () 发送半托管呼叫的地址。默认值为 ,这意味着在调试会话期间和其他情况下。nativegdbautogdbnative

    • chardev=str1

    • 将输出发送到 chardev 后端输出,以便在不在 gdb 中时进行本机输出或自动输出

    • arg=str1,arg=str2,...

    • 允许用户传递输入参数,并且可以多次用于构建列表。为了向后兼容,仍然支持传递命令行的旧式 / 方法。如果同时指定了 和 / ,则前者将传递到半宿主,因为它始终优先。-kernel-append--semihosting-config arg-kernel-append

  • -old-param

  • 旧的参数模式(仅限 ARM)。

  • -sandbox arg[,obsolete=string][,elevateprivileges=string][,spawn=string][,resourcecontrol=string]

  • 启用 Seccomp 模式 2 系统调用筛选器。“on”将启用系统调用筛选,“off”将禁用它。默认值为“关闭”。

    • obsolete=string

    • 启用过时的系统调用

    • elevateprivileges=string

    • 禁用 set*uid|gid 系统调用

    • spawn=string

    • 禁用 *分叉和执行

    • resourcecontrol=string

    • 禁用进程关联和计划优先级

  • -readconfig file

  • 从文件中读取设备配置。当您想要生成具有许多命令行选项但又不想超过命令行字符限制的 QEMU 进程时,此方法很有用。

  • -no-user-config

  • 该选项使 QEMU 不会在 sysconfdir 上加载任何用户提供的配置文件。-no-user-config

  • -trace [[enable=]pattern][,events=file][,file=file]

  • 指定跟踪选项。

    [enable=]PATTERN

    立即启用与 PATTERN 匹配的事件(事件名称或通配模式)。仅当 QEMU 已使用 或 跟踪后端编译时,此选项才可用。要指定多个事件或模式,请多次指定该选项。simplelogftrace-trace

    用于打印跟踪点名称的列表。-trace help

    events=FILE

    立即启用 FILE 中列出的事件。文件每行必须包含一个事件名称(如文件中列出的);球状图案也被接受。仅当 QEMU 已使用 或 跟踪后端编译时,此选项才可用。trace-events-allsimplelogftrace

    file=FILE

    将输出跟踪记录到 FILE。仅当使用跟踪后端编译 QEMU 时,此选项才可用。simple

  • -plugin file=file[,argname=argvalue]

  • 加载插件。

    • file=file

    • 从共享库文件加载给定的插件。

    • argname=argvalue

    • 传递给插件的参数。(可以多次给出。

  • -msg [timestamp[=on|off]][,guest-name[=on|off]]

  • 控制错误消息格式。

    • timestamp=on|off

    • 为消息添加时间戳前缀。默认值为关闭。

    • guest-name=on|off

    • 在消息前面加上客户机名称前缀,但前提是设置了 -name 客户机选项,否则将忽略该选项。默认值为关闭。

  • -dump-vmstate file

  • 将当前计算机类型的 json 编码 vmstate 信息转储到文件中的文件

  • -enable-sync-profile

  • 启用同步分析。


[QEMU]调试/专家选项(2)的评论 (共 条)

分享到微博请遵守国家法律