title: debugging code run in a virtual machine using the host
body: <p>Is there a debugger which works from a virtual machine's <strong>host</strong>?</p>
  
  <p>That is, instead of using interrupts inside the machine, I expect this debugger to recognize the virtual machine's OS routines, memory locations etc, and to recognize when the OS is launching a certian EXE. Then I want to be able to set <em>hardware</em>-like breakpoints per process through the host computer. I'll clarify. The virtualized computer and OS would never know that the breakpoint was set or occurred. All debug handling would be done by the host computer which emulates a virtual computer.</p>
  
  <p>This would enable much stronger breakpoint mechanism, for example "break when a certain data is read from the CDROM drive", or "break when a certain file on the disk contains the following byte sequence".</p>
  
  <p>This approach will also, for example, eliminate <a href="http://www.securityfocus.com/infocus/1893" rel="nofollow noreferrer">anti-debugger</a> techniques which are suppose to alter the executable's behavior when running under a debugger. (OTOH it opens up a new area of anti-virtualization techniques which relies upon slight differences between emulated computer and real hardware).</p>
  
  <p>Is there such a product? Does it look like a good idea?</p>