DS-5 Debugger provides basic support for bare-metal hypervisor debugging. When connected to a processor that supports virtualization extensions, the debugger enables you to distinguish between hypervisor and guest memory, and to set breakpoints that only apply when in
hypervisor mode or within a specific guest operating system.
A hypervisor typically provides separate address spaces for itself as well as
for each guest operating system. Unless informed otherwise, all memory accesses by
the debugger occur in the current context. If you are stopped in hypervisor mode
then memory accesses use the hypervisor memory space, and if stopped in a guest
operating system then memory accesses use the address space of the guest operating
system. To force access to a particular address space, you must prefix the address
H: for hypervisor or
N: for guest operating system.
NoteIt is only possible to access the address space of the guest operating system that
is currently scheduled to run within the hypervisor. It is not possible to specify a
different guest operating system.
Similarly, hardware and software breakpoints can be configured to match on hypervisor or guest operating systems using the same address prefixes. If no address prefix is used then the breakpoint applies to the address space that is current when the breakpoint is first
set. For example, if a software breakpoint is set in memory that is shared between hypervisor and a guest operating system, then the possibility exists for the breakpoint to be hit from the wrong mode, and in this case the debugger may not recognize your breakpoint as the reason for
For hardware breakpoints only, not software breakpoints, you can additionally
configure them to match only within a specific guest operating system. This feature
uses the architecturally defined Virtual Machine ID (VMID) register to spot when a specific guest operating
system is executing. The hypervisor is responsible for assigning unique VMIDs to
each guest operating system setting this in the VMID register when that guest
operating system executes. In using this feature, it is your responsibility to
understand which VMID is associated with each guest operating system that you want
to debug. Assuming a VMID is known, you can apply a breakpoint to it within the
Breakpoints view or by using the
When debugging a system that is running multiple guest operating systems, you can optionally enable the
set print current-vmid setting to receive notifications in the console when the debugger stops and the current VMID changes. You can
also obtain the VMID within DS-5 scripts using the
$vmid debugger variable.