Re: Using gdb, how to step only one machine instruction after vmrun instruction? ...so that I jump in the guest OS code
Parfait Tokponnon <[email protected]>
| Newsgroups | gmane.comp.gdb.devel |
|---|---|
| Message-ID | <CAOfT3nHCn8eqGriZ2hADc991zcM4uo45UHDKvureCTfYq4W0CQ@mail.gmail.com> |
2016-03-23 14:45 GMT+01:00 Parfait Tokponnon <[email protected]>: > Hello, > I 'm using gdb to debug an hypervisor. and my goal is to trace the program > execution starting from the point that the hypervisor launches the guest OS > by "VMRUN" instruction so that I can jump to the first instruction in the > guest OS code. > This is an excerpt from the hypervisor code: > clgi; > sti; > vmload; > vmrun; // starting from here, the cpu switch on > virtualization and the Guest OS is fecthed > vmsave; // this is the first instruction after a VMEXIT > > So, according to AMD documentation, the next instruction after VMRUN is at > CS:RIP where CS and RIP are extracted from the VMCB specific field. > But using gdb, when I step one instruction from VMRUN, the next instruction > fechted by the debugger is the next instruction in the hypervisor code, that > is "VMSAVE", not the OS code. > So my problem is to trace the execution from the host code to the guest > code. > How can I do that? Is there anyone who faced such a kind of problem? > Hope I can get help from YOU. Thanks > -- > Parfait T. -- Parfait T.