This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Re: Using gdb, how to step only one machine instruction after vmrun instruction? ...so that I jump in the guest OS code
- From: Parfait Tokponnon <parfait dot tokponnon at gmail dot com>
- To: gdb at sourceware dot org
- Date: Wed, 23 Mar 2016 14:49:53 +0100
- Subject: Re: Using gdb, how to step only one machine instruction after vmrun instruction? ...so that I jump in the guest OS code
- Authentication-results: sourceware.org; auth=none
- References: <CAOfT3nHaoBptrjZoYg3V2BenbYUmu36-3-MXnx9SanmnkpDxbA at mail dot gmail dot com>
2016-03-23 14:45 GMT+01:00 Parfait Tokponnon <parfait.tokponnon@gmail.com>:
> 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.