2016-12-04 76 views
10

我目前使用Simics module(請參閱第6章)來偵聽指令獲取和數據訪問,並對所有這些事件運行回調以檢測正在運行的內核Simics x86。例如,我可以創建一個的Simics模塊如下:在VMware ESXi中對數據訪問生成函數調用

/* Initialize our Simics module. */ 
void init_local(void) 
{ 
    const class_data_t funcs = { 
     .new_instance = ls_new_instance, 
     .class_desc = "desc", 
     .description = "A simics module." 
    }; 

    /* Register the empty device class. */ 
    conf_class_t *conf_class = SIM_register_class(SIM_MODULE_NAME, &funcs); 

    /* Register our class class as a trace consumer. */ 
    static const trace_consume_interface_t trace_int = { 
     .consume = (void (*)(conf_object_t *, trace_entry_t *))my_tool_entrypoint 
    }; 
    SIM_register_interface(conf_class, TRACE_CONSUME_INTERFACE, &trace_int); 
} 

通過這樣做,將Simics中調用my_tool_entrypoint每個指令和每個數據訪問;允許我在我認爲合適的情況下運行內核。毋庸置疑,這是一個非常酷且非常強大的功能。

我的問題是:

  1. 可用於在VMware ESXi的(或VMware工作站)管理程序上運行的程序這樣的功能?如果是這樣,該功能的文檔在哪裏?
  2. 如果它在ESXi上不可用,是否可以在任何其他虛擬機管理程序(例如Xen)上使用它?

請注意,我不詢問下如何/ VMware的,Xen的,Bochs的,等我問如果可能的話/在取指令和內存訪問如何運行回調運行的Simics(如我展示的可能與Simics)在另一個平臺上,例如VMware,Xen,Bochs,Qemu等。

回答

1

聽起來你想使用「vProbes」。 vProbe允許您動態測試來賓操作系統中的任何指令或數據訪問,然後使用回調腳本。 (不知道你是否聽說過Solaris的「Dtrace」,但它是相似的)我已經用它來跟蹤Linux調度器內部的函數調用。腳本必須用稱爲Emmett的C語言編寫。本文是對該技術的一個很好的閱讀,以及可能的內容:https://labs.vmware.com/vmtj/vprobes-deep-observability-into-the-esxi-hypervisor

另外,這裏是工作站和融合參考指南的鏈接。看起來有點老,但我認爲它沒有太大的改變。 (順便說一下,它適用於ESXi以及Workstation和Fusion) http://www.vmware.com/pdf/ws7_f3_vprobes_reference.pdf