[QEMU]調(diào)試/專家選項(2)

-parallel?dev
將虛擬并行端口重定向到主機(jī)設(shè)備開發(fā)(與串行端口相同的設(shè)備)。在 Linux 主機(jī)上,可以使用硬件設(shè)備連接到相應(yīng)的主機(jī)并行端口。
/dev/parportN
此選項可多次用于模擬最多 3 個并行端口。
用于禁用所有并行端口。
-parallel?none
-monitor?dev
將監(jiān)視器重定向到主機(jī)設(shè)備開發(fā)(與串行端口相同的設(shè)備)。默認(rèn)設(shè)備處于圖形模式和非圖形模式。用于禁用默認(rèn)監(jiān)視器。
vc
stdio
-monitor?none
-qmp?dev
像 -monitor 一樣,但在“控制”模式下打開。
-qmp-pretty?dev
像-qmp一樣,但使用漂亮的JSON格式。
-mon?[chardev=]name[,mode=readline|control][,pretty[=on|off]]
在 chardev 名稱上設(shè)置監(jiān)視器。 配置QMP監(jiān)視器(JSON RPC樣式的協(xié)議),它與具有“(qemu)”提示符的人工監(jiān)視器HMP不同。 僅在 以下情況下有效,打開 JSON 漂亮打印以方便人工閱讀和調(diào)試。
mode=control
pretty
mode=control
-debugcon?dev
將調(diào)試控制臺重定向到主機(jī)設(shè)備開發(fā)(與串行端口相同的設(shè)備)。調(diào)試控制臺是一個I / O端口,通常是端口0xe9;寫入該 I/O 端口,將輸出發(fā)送到此設(shè)備。默認(rèn)設(shè)備處于圖形模式和非圖形模式。
vc
stdio
-pidfile?file
將 QEMU 進(jìn)程 PID 存儲在文件中。如果從腳本啟動 QEMU,這將非常有用。
-singlestep
在單步模式下運(yùn)行仿真。
--preconfig
在創(chuàng)建計算機(jī)之前暫停 QEMU 以進(jìn)行交互式配置,這允許查詢和配置將影響計算機(jī)初始化的屬性。使用 QMP 命令 'x-exit-preconfig' 退出預(yù)配置狀態(tài)并移動到下一個狀態(tài)(即,如果未使用 -S,則運(yùn)行來賓,如果使用 -S,則暫停第二次)。此選項是實驗性的。
-S
不要在啟動時啟動 CPU(必須在監(jiān)視器中鍵入“c”)。
-overcommit?mem-lock=on|off
-overcommit?cpu-pm=on|off
運(yùn)行 qemu 并提示主機(jī)資源過度使用。默認(rèn)設(shè)置是假定主機(jī)過度提交所有資源。
鎖定 qemu 和來賓內(nèi)存可以通過啟用(默認(rèn)情況下禁用)。當(dāng)主機(jī)內(nèi)存未過度使用時,此方法有效,并減少了來賓的最壞情況延遲。
mem-lock=on
可以通過(默認(rèn)情況下禁用)啟用來賓管理主機(jī) CPU 電源狀態(tài)的功能(增加同一主機(jī) CPU 上其他進(jìn)程的延遲,但減少來賓的延遲)。當(dāng)主機(jī) CPU 未過度使用時,此方法效果最佳。使用時,主機(jī)對 CPU 周期和電源利用率的估計將不正確,而不考慮來賓空閑時間。
cpu-pm=on
-gdb?dev
在設(shè)備 dev 上接受 gdb 連接(請參閱《系統(tǒng)仿真用戶指南》中的?GDB 用法章節(jié))。請注意,此選項不會暫停 QEMU 執(zhí)行 – 如果您希望 QEMU 在連接 gdb 并發(fā)出命令之前不啟動來賓,則還需要將該選項傳遞給 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 服務(wù)器(請參閱《系統(tǒng)仿真用戶指南》中的?GDB 用法章節(jié))。
-d?item1[,...]
啟用指定項的日志記錄。使用“-d 幫助”獲取日志項列表。
-D?logfile
在日志文件中輸出日志,而不是在 stderr 中輸出日志
-dfilter?range1[,...]
將調(diào)試輸出篩選為與目標(biāo)地址范圍相關(guān)的調(diào)試輸出。篩選器規(guī)范可以是開始+ 大小,開始大小或開始。結(jié)束,其中開始結(jié)束和大小是所需的地址和大小。例如:
-dfilter 0x8000..0x8fff,0xffffffc000080000+0x200,0xffffffc000060000-0x1000
將轉(zhuǎn)儲0x1000大小的塊中任何代碼的輸出,從0x8000開始,0x200大小的塊從0xffffffc000080000開始,另一個0x1000大小的塊從0xffffffc00005f000開始。
-seed?number
強(qiáng)制來賓使用確定性偽隨機(jī)數(shù)生成器,并用數(shù)字作為種子。這不會影響主機(jī)中的加密例程。
-L??path
設(shè)置 BIOS、VGA BIOS 和鍵盤映射的目錄。
要列出所有數(shù)據(jù)目錄,請使用 。
-L?help
-bios?file
設(shè)置 BIOS 的文件名。
-enable-kvm
啟用 KVM 完全虛擬化支持。僅當(dāng)編譯時啟用了 KVM 支持時,此選項才可用。
-xen-domid?id
指定 xen 來賓域 ID(僅限 XEN)。
-xen-attach
附加到現(xiàn)有的 xen 域。libxl 將在啟動 QEMU 時使用它(僅限 XEN)。將一組可用的 xen 操作限制為指定的域 ID(僅限 XEN)。
-no-reboot
退出而不是重新啟動。
-no-shutdown
不要在客戶機(jī)關(guān)閉時退出 QEMU,而只是停止模擬。例如,這允許切換到監(jiān)視器以提交對磁盤映像的更改。
-action?event=action
action 參數(shù)用于在某些來賓事件發(fā)生時修改 QEMU 的默認(rèn)行為。它提供了一個泛型方法,用于指定由 和 參數(shù)修改的相同行為。
-no-reboot
-no-shutdown
例子:
-action?panic=none
?-action?reboot=shutdown,shutdown=pause
?-watchdog?i6300esb?-action?watchdog=pause
-loadvm?file
立即以保存的狀態(tài)開始(在監(jiān)視器中)
loadvm
-daemonize
初始化后守護(hù) QEMU 進(jìn)程。QEMU 不會從標(biāo)準(zhǔn) IO 中分離,直到它準(zhǔn)備好接收其任何設(shè)備上的連接。此選項是外部程序啟動 QEMU 的有用方法,無需處理初始化爭用條件。
-option-rom?file
將文件內(nèi)容作為選項ROM加載。此選項對于加載EtherBoot之類的東西很有用。
-rtc?[base=utc|localtime|datetime][,clock=host|rt|vm][,driftfix=none|slew]
指定為 或,讓 RTC 分別在當(dāng)前 UTC 或本地時間啟動。 對于 MS-DOS 或 Windows 中的正確日期是必需的。要從特定時間點(diǎn)開始,請以 或 的格式提供日期時間。默認(rèn)基數(shù)為 UTC。
base
utc
localtime
localtime
2006-06-17T16:01:21
2006-06-17
默認(rèn)情況下,RTC 由主機(jī)系統(tǒng)時間驅(qū)動。這允許將RTC用作來賓內(nèi)部的精確參考時鐘,特別是如果主機(jī)時間平滑地遵循精確的外部參考時鐘,例如通過NTP。如果要將來賓時間與主機(jī)隔離,可以設(shè)置為 改用,如果主機(jī)支持,這將提供主機(jī)單調(diào)時鐘。為了防止RTC在掛起期間進(jìn)行,您可以設(shè)置為(虛擬時鐘)。建議使用 '',特別是在 icount 模式下,以保持確定性;但是,請注意,在 icount 模式下,虛擬時鐘的速度是可變的,通常可能與主機(jī)時鐘不同。
clock
rt
clock
vm
clock=vm
啟用(僅限 i386 目標(biāo))如果您遇到時間偏移問題,特別是 Windows 的 ACPI HAL。此選項將嘗試找出 Windows 來賓未處理多少個計時器中斷,并將重新注入這些中斷。
driftfix
-icount?[shift=N|auto][,align=on|off][,sleep=on|off][,rr=record|replay,rrfile=filename[,rrsnapshot=snapshot]]
啟用虛擬指令計數(shù)器。虛擬 CPU 將每 2^Nns 的虛擬時間執(zhí)行一條指令。如果指定,則虛擬 CPU 速度將自動調(diào)整,以保持虛擬時間在實時的幾秒鐘內(nèi)。
auto
請注意,雖然此選項可以提供確定性行為,但它不提供周期精確的仿真。現(xiàn)代 CPU 包含具有復(fù)雜緩存層次結(jié)構(gòu)的超標(biāo)量無序內(nèi)核。執(zhí)行的指令數(shù)量通常與實際性能幾乎沒有相關(guān)性。
當(dāng)虛擬 CPU 處于休眠狀態(tài)時,除非指定,否則虛擬時間將以默認(rèn)速度前進(jìn)。使用 ,每當(dāng)虛擬 CPU 進(jìn)入睡眠模式時,虛擬時間將立即跳轉(zhuǎn)到下一個計時器截止時間,如果未啟用計時器,則虛擬時間將不會前進(jìn)。從來賓的角度來看,此行為提供了確定性的執(zhí)行時間。如果啟用了 icount,則缺省值為 。 不能與 或 一起使用。
sleep=on
sleep=on
sleep=off
sleep=on
shift=auto
align=on
align=on
將激活延遲算法,該算法將嘗試同步主機(jī)時鐘和虛擬時鐘。目標(biāo)是讓來賓以 shift 選項施加的實際頻率運(yùn)行。每當(dāng)來賓時鐘落后于主機(jī)時鐘并且如果指定時,我們就會向用戶打印一條消息以通知延遲。目前,當(dāng) is 時,此選項不起作用。注意:同步算法將適用于來賓時鐘在主機(jī)時鐘之前運(yùn)行的班次值。通常,當(dāng)移位值較高時會發(fā)生這種情況(高多少取決于主機(jī))。如果啟用了 icount,則缺省值為 。align=on
shift
auto
align=off
指定該選項后,將啟用確定性記錄/重播。還必須提供該選項來指定重播日志的路徑。在記錄模式下,數(shù)據(jù)將寫入此文件,在重播模式下,數(shù)據(jù)將被讀回。如果給定該選項,則指定 VM 快照名稱。在記錄模式下,在執(zhí)行記錄開始時會創(chuàng)建具有給定名稱的新 VM 快照。在重播模式下,此選項指定用于加載初始 VM 狀態(tài)的快照名稱。
rr
rrfile=
rrsnapshot
-watchdog?model
創(chuàng)建虛擬硬件看門狗設(shè)備。啟用(通過來賓操作)后,監(jiān)視器必須由來賓內(nèi)部的代理定期輪詢,否則來賓將重新啟動。選擇來賓具有驅(qū)動程序的型號。
該模型是要模擬的硬件看門狗的模型。用于列出可用的硬件型號。只能為一個來賓啟用一個監(jiān)視器。
-watchdog?help
可能提供以下型號:
ib700
iBASE 700 是一款非常簡單的 ISA 看門狗,只有一個計時器。
i6300esb
英特爾 6300ESB I/O 控制器中樞是一款功能更強(qiáng)大的基于 PCI 的雙定時器看門狗。
diag288
由診斷 288 超級呼叫(目前僅限 KVM)支持的 s390x 虛擬看門狗。
-watchdog-action?action
該操作控制 QEMU 在監(jiān)視程序計時器過期時將執(zhí)行的操作。默認(rèn)值為(強(qiáng)制重置來賓)。其他可能的操作包括:(嘗試正常關(guān)閉客戶機(jī))、(強(qiáng)制關(guān)閉客戶機(jī)電源)、(將 NMI 注入客戶機(jī))、(暫??蛻魴C(jī))、(打印調(diào)試消息并繼續(xù))或(不執(zhí)行任何操作)。
reset
shutdown
poweroff
inject-nmi
pause
debug
none
請注意,該操作要求來賓響應(yīng) ACPI 信號,在監(jiān)視器已過期的情況下,它可能無法執(zhí)行此操作,因此不建議用于生產(chǎn)用途。
shutdown
-watchdog-action?shutdown
例子:
-watchdog?i6300esb?-watchdog-action?pause
;?-watchdog?ib700
-echr?numeric_ascii_value
更改使用監(jiān)視器和串行共享時用于切換到監(jiān)視器的轉(zhuǎn)義字符。默認(rèn)值為使用該選項時。 等于按 。您可以從 ascii 控制鍵中選擇其他字符,其中 1 到 26 通過 Control-z 映射到 Control-a。例如,您可以使用以下任一方法將轉(zhuǎn)義字符更改為 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]
準(zhǔn)備傳入遷移,偵聽給定的 tcp 端口。
-incoming?unix:socketpath
準(zhǔn)備傳入的遷移,偵聽給定的 unix 套接字。
-incoming?fd:fd
接受來自給定文件描述符的傳入遷移。
-incoming?exec:cmdline
接受傳入遷移作為指定外部命令的輸出。
-incoming?defer
等待通過migrate_incoming指定 URI。監(jiān)視器可用于在發(fā)出migrate_incoming以允許開始遷移之前更改設(shè)置(如遷移參數(shù))。
-only-migratable
僅允許可遷移的設(shè)備。不允許設(shè)備進(jìn)入不可遷移狀態(tài)。
-nodefaults
不要創(chuàng)建默認(rèn)設(shè)備。通常,QEMU設(shè)置默認(rèn)設(shè)備,如串行端口,并行端口,虛擬控制臺,監(jiān)控設(shè)備,VGA適配器,軟盤和CD-ROM驅(qū)動器等。該選項將禁用所有這些默認(rèn)設(shè)備。
-nodefaults
-chroot?dir
在開始來賓執(zhí)行之前,立即將 chroot 連接到指定的目錄。與 -runas 結(jié)合使用特別有用。
-runas?user
在開始客戶機(jī)執(zhí)行之前,立即刪除 root 權(quán)限,切換到指定的用戶。
-prom-env?variable=value
將 OpenBIOS nvram 變量設(shè)置為給定值(僅限 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
啟用半主機(jī)模式(僅限 ARM、M68K、Xtensa、MIPS、Nios II、RISC-V)。
請注意,這允許來賓直接訪問主機(jī)文件系統(tǒng),因此應(yīng)僅與受信任的來賓操作系統(tǒng)一起使用。
有關(guān)啟用的功能的詳細(xì)信息,請參閱 -半托管-配置選項文檔。
-semihosting-config?[enable=on|off][,target=native|gdb|auto][,chardev=id][,arg=str[,...]]
啟用和配置半主機(jī)(僅限 ARM、M68K、Xtensa、MIPS、Nios II、RISC-V)。
請注意,這允許來賓直接訪問主機(jī)文件系統(tǒng),因此應(yīng)僅與受信任的來賓操作系統(tǒng)一起使用。
在 Arm 上,它實現(xiàn)了標(biāo)準(zhǔn)的半托管 API 版本 2.0。
在M68K上,這實現(xiàn)了libgloss使用的“ColdFire GDB”接口。
Xtensa 半托管提供基本的文件 IO 調(diào)用,例如打開/讀/寫/查找/選擇。Tensilica baremetal libc for ISS 和 linux 平臺 “sim” 使用此接口。
在RISC-V上,它實現(xiàn)了標(biāo)準(zhǔn)的半托管API版本0.2。
target=native|gdb|auto
定義將向 QEMU () 或 GDB () 發(fā)送半托管呼叫的地址。默認(rèn)值為 ,這意味著在調(diào)試會話期間和其他情況下。
native
gdb
auto
gdb
native
chardev=str1
將輸出發(fā)送到 chardev 后端輸出,以便在不在 gdb 中時進(jìn)行本機(jī)輸出或自動輸出
arg=str1,arg=str2,...
允許用戶傳遞輸入?yún)?shù),并且可以多次用于構(gòu)建列表。為了向后兼容,仍然支持傳遞命令行的舊式 / 方法。如果同時指定了 和 / ,則前者將傳遞到半宿主,因為它始終優(yōu)先。
-kernel
-append
--semihosting-config?arg
-kernel
-append
-old-param
舊的參數(shù)模式(僅限 ARM)。
-sandbox?arg[,obsolete=string][,elevateprivileges=string][,spawn=string][,resourcecontrol=string]
啟用 Seccomp 模式 2 系統(tǒng)調(diào)用篩選器。“on”將啟用系統(tǒng)調(diào)用篩選,“off”將禁用它。默認(rèn)值為“關(guān)閉”。
obsolete=string
啟用過時的系統(tǒng)調(diào)用
elevateprivileges=string
禁用 set*uid|gid 系統(tǒng)調(diào)用
spawn=string
禁用 *分叉和執(zhí)行
resourcecontrol=string
禁用進(jìn)程關(guān)聯(lián)和計劃優(yōu)先級
-readconfig?file
從文件中讀取設(shè)備配置。當(dāng)您想要生成具有許多命令行選項但又不想超過命令行字符限制的 QEMU 進(jìn)程時,此方法很有用。
-no-user-config
該選項使 QEMU 不會在 sysconfdir 上加載任何用戶提供的配置文件。
-no-user-config
-trace?[[enable=]pattern][,events=file][,file=file]
指定跟蹤選項。
[enable=]PATTERN
立即啟用與?PATTERN?匹配的事件(事件名稱或通配模式)。僅當(dāng) QEMU 已使用 或 跟蹤后端編譯時,此選項才可用。要指定多個事件或模式,請多次指定該選項。
simple
log
ftrace
-trace
用于打印跟蹤點(diǎn)名稱的列表。
-trace?help
events=FILE
立即啟用?FILE?中列出的事件。文件每行必須包含一個事件名稱(如文件中列出的);球狀圖案也被接受。僅當(dāng) QEMU 已使用 或 跟蹤后端編譯時,此選項才可用。
trace-events-all
simple
log
ftrace
file=FILE
將輸出跟蹤記錄到?FILE。僅當(dāng)使用跟蹤后端編譯 QEMU 時,此選項才可用。
simple
-plugin?file=file[,argname=argvalue]
加載插件。
file=file
從共享庫文件加載給定的插件。
argname=argvalue
傳遞給插件的參數(shù)。(可以多次給出。
-msg?[timestamp[=on|off]][,guest-name[=on|off]]
控制錯誤消息格式。
timestamp=on|off
為消息添加時間戳前綴。默認(rèn)值為關(guān)閉。
guest-name=on|off
在消息前面加上客戶機(jī)名稱前綴,但前提是設(shè)置了 -name 客戶機(jī)選項,否則將忽略該選項。默認(rèn)值為關(guān)閉。
-dump-vmstate?file
將當(dāng)前計算機(jī)類型的 json 編碼 vmstate 信息轉(zhuǎn)儲到文件中的文件
-enable-sync-profile
啟用同步分析。