2016-12-04 37 views
10

Obecnie używam Simics module (patrz rozdział 6) do odsłuchiwania pobierania instrukcji i dostępu do danych oraz uruchamiania wywołań zwrotnych we wszystkich tych zdarzeniach, aby instrument obsługił jądro, które jest uruchomione Simics x86. Na przykład, można utworzyć moduł Simics następująco:Generowanie wywołań funkcji na dostępach do danych w 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); 
} 

Dzięki temu Simics wezwie my_tool_entrypoint na każdej instrukcji i każdy dostęp do danych; pozwalając mi na przyswojenie jądra, które używam, jak uważam za stosowne. Nie trzeba dodawać, że jest to bardzo fajna i bardzo potężna funkcja.

Moje pytania są następujące:

  1. Czy taka funkcja dostępna dla programów uruchomionych na VMware ESXi (lub VMware Workstation) Hypervisor? Jeśli tak, to gdzie jest dokumentacja tej funkcji?
  2. Jeśli nie jest dostępny w ESXi, czy jest dostępny dla innych hypervisorów, takich jak Xen?

Zauważ, że jestem NIE pytając jak uruchomić Simics pod/nad VMware, Xen, Bochs itp Pytam, czy jest to możliwe/jak uruchomić oddzwanianie instrukcja pobiera i pamięć dostęp (jak Pokazałem było możliwe z Simics) na innej platformie, takiej jak VMware, Xen, Bochs, Qemu itp.

Odpowiedz

1

Wygląda na to, że chcesz użyć "vProbes". vProbes pozwalają na dynamiczne instrumentowanie dowolnej instrukcji lub dostępu do danych w gościnnym systemie operacyjnym, a następnie skryptów wywołania zwrotnego. (nie wiem, czy słyszałeś o "Dtrace" dla Solaris, ale jest podobnie) Użyłem go do śledzenia wywołań funkcji wewnątrz programu szeregującego Linuksa na przykład. Skrypty muszą być napisane w języku podobnym do C, zwanym Emmett. Ten artykuł jest dobrą lekturą na temat technologii i co jest możliwe: https://labs.vmware.com/vmtj/vprobes-deep-observability-into-the-esxi-hypervisor

Tutaj znajduje się również link do przewodnika dla Workstation i Fusion. Wydaje się nieco stary, ale nie sądzę, żeby się bardzo zmienił. (BTW, działa na ESXi oraz Workstation i Fusion) http://www.vmware.com/pdf/ws7_f3_vprobes_reference.pdf