我使用虛擬機器在 Mac OS X 上進行核心調試,因為它比其他電腦更便宜、更方便。
不幸的是,與 Windows 的等效項相反,不可能使用偵錯器來停止核心。要停止它,您必須向機器發送不可屏蔽中斷。在實體機上,您可以在啟動時使用正確的調試標誌來完成此操作,然後⌘在按下電源按鈕的同時按住兩個鍵。然而,這個組合鍵在虛擬機器上並不能完全實現。
我找到了一個草率的劇本掛起虛擬機,編輯掛起狀態以指示 NMI 正在掛起,然後恢復它,但這看起來像是浪費時間。
是否可以使用 VMware Fusion 向虛擬機器傳送不可屏蔽中斷?
答案1
您可以透過命令將位元標誌設定/新增到變數的參數0x4
中。這是一個例子:debug
boot-args
nvram
sudo nvram boot-args="debug=0x144 kext-dev-mode=1 kcsuffix=development pmuflags=1 -v"
如上所述這裡,除其他參數外,此debug=0x4
標誌可讓您進入 NMI 上的偵錯器。這意味著您可以Command-Option-Control-Shift-Escape
隨時按下虛擬機器並進入偵錯器(出於某種原因,fn
如果上述組合鍵不起作用,您可能還需要按)。
最終,在設定斷點、檢查記憶體、列印回溯等之後,您需要鍵入continue
核心以恢復執行。