Jackson on our team recently posted a sample on building a debug engine. In our architecture, the debug engine is the part that does all of the communication with the debugging/diagnostic APIs for a given platform, and communicates those back to the UI through a common set of interfaces. The debugger ships debug engines for managed code, native code, script, native devices and t-sql in the box. The debugger engine extension point gives people writing new platforms the ability to provide an excellent VS debugging experience.
Take a look at the sample here: