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

-parallel dev
将虚拟并行端口重定向到主机设备开发(与串行端口相同的设备)。在 Linux 主机上,可以使用硬件设备连接到相应的主机并行端口。
/dev/parportN
此选项可多次用于模拟最多 3 个并行端口。
用于禁用所有并行端口。
-parallel none
-monitor dev
将监视器重定向到主机设备开发(与串行端口相同的设备)。默认设备处于图形模式和非图形模式。用于禁用默认监视器。
vc
stdio
-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=control
pretty
mode=control
-debugcon dev
将调试控制台重定向到主机设备开发(与串行端口相同的设备)。调试控制台是一个I / O端口,通常是端口0xe9;写入该 I/O 端口,将输出发送到此设备。默认设备处于图形模式和非图形模式。
vc
stdio
-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。
base
utc
localtime
localtime
2006-06-17T16:01:21
2006-06-17
默认情况下,RTC 由主机系统时间驱动。这允许将RTC用作来宾内部的精确参考时钟,特别是如果主机时间平滑地遵循精确的外部参考时钟,例如通过NTP。如果要将来宾时间与主机隔离,可以设置为 改用,如果主机支持,这将提供主机单调时钟。为了防止RTC在挂起期间进行,您可以设置为(虚拟时钟)。建议使用 '',特别是在 icount 模式下,以保持确定性;但是,请注意,在 icount 模式下,虚拟时钟的速度是可变的,通常可能与主机时钟不同。
clock
rt
clock
vm
clock=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=on
sleep=on
sleep=off
sleep=on
shift=auto
align=on
align=on
将激活延迟算法,该算法将尝试同步主机时钟和虚拟时钟。目标是让来宾以 shift 选项施加的实际频率运行。每当来宾时钟落后于主机时钟并且如果指定时,我们就会向用户打印一条消息以通知延迟。目前,当 is 时,此选项不起作用。注意:同步算法将适用于来宾时钟在主机时钟之前运行的班次值。通常,当移位值较高时会发生这种情况(高多少取决于主机)。如果启用了 icount,则缺省值为 。align=on
shift
auto
align=off
指定该选项后,将启用确定性记录/重播。还必须提供该选项来指定重播日志的路径。在记录模式下,数据将写入此文件,在重播模式下,数据将被读回。如果给定该选项,则指定 VM 快照名称。在记录模式下,在执行记录开始时会创建具有给定名称的新 VM 快照。在重播模式下,此选项指定用于加载初始 VM 状态的快照名称。
rr
rrfile=
rrsnapshot
-watchdog model
创建虚拟硬件看门狗设备。启用(通过来宾操作)后,监视器必须由来宾内部的代理定期轮询,否则来宾将重新启动。选择来宾具有驱动程序的型号。
该模型是要模拟的硬件看门狗的模型。用于列出可用的硬件型号。只能为一个来宾启用一个监视器。
-watchdog help
可能提供以下型号:
ib700
iBASE 700 是一款非常简单的 ISA 看门狗,只有一个计时器。
i6300esb
英特尔 6300ESB I/O 控制器中枢是一款功能更强大的基于 PCI 的双定时器看门狗。
diag288
由诊断 288 超级呼叫(目前仅限 KVM)支持的 s390x 虚拟看门狗。
-watchdog-action action
该操作控制 QEMU 在监视程序计时器过期时将执行的操作。默认值为(强制重置来宾)。其他可能的操作包括:(尝试正常关闭客户机)、(强制关闭客户机电源)、(将 NMI 注入客户机)、(暂停客户机)、(打印调试消息并继续)或(不执行任何操作)。
reset
shutdown
poweroff
inject-nmi
pause
debug
none
请注意,该操作要求来宾响应 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
-nographic
0x01
Control-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 () 发送半托管呼叫的地址。默认值为 ,这意味着在调试会话期间和其他情况下。
native
gdb
auto
gdb
native
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 已使用 或 跟踪后端编译时,此选项才可用。要指定多个事件或模式,请多次指定该选项。
simple
log
ftrace
-trace
用于打印跟踪点名称的列表。
-trace help
events=FILE
立即启用 FILE 中列出的事件。文件每行必须包含一个事件名称(如文件中列出的);球状图案也被接受。仅当 QEMU 已使用 或 跟踪后端编译时,此选项才可用。
trace-events-all
simple
log
ftrace
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
启用同步分析。