2013-02-06 54 views
2

調試功能(如GDB)通過設置eflags寄存器的TF標誌來工作,該標誌在處理器執行指令後導致異常。當我們在kvm的情況下運行虛擬機Ex時,您需要設置一個名爲MONITOR TRAP FLAG(當前intel軟件手冊3c的第15頁)的標誌,這會導致虛擬macine退出(VMEXIT)在每次給予hypervisor權限的指令之後。如何在每個分支指令中對kvm執行VMEXIT?

我面臨一個問題,我需要設置BTF(分支陷阱標誌)(PG 689 vOLUME 3a INTEL sotfware手冊)。在正常情況下,這會導致每個分支指令都出現DEBUG EXCEPTION,但是因爲我想在VM上執行此操作,所以我無法確定要在VMCS中設置哪個位。在單步執行中似乎沒有直接的方法。任何人都可以讓我知道如果有某種方式使用其他方式來做同樣的事情嗎?

回答

0

BTF標誌不在vmcs中,它位於IA32_DEBUGCTL msr中。 您需要通過在vm條目之前執行wrmsr來顯式設置它。對於kvm,您可以在vmx_vcpu_run中添加此項。