The ICorDebug API (the API for debugging managed apps) is about 70 total interfaces.
Here is how I'd group the interfaces together, along with my random comments about
how various interfaces fit into the big picture.
A quick comment about interface versioning:
1. ICorDebug is a COM-classic unmanaged interface. Most of the interfaces are derived from
IUnknown because we wanted to avoid the diamond-inheritance problem when we needed to add
version 2 interfaces. I've left the "Derives From" column blank if an interface derives
from IUnknown.
2. Version 2 interfaces have the previous interface's name appended with a version number.
(eg, "IFoo2")
I'd roughly partition it into the following groups:
Top-level: ICorDebug + ICorDebug2 are the top-level interfaces which effectively serve as
a collection of ICorDebugProcess objects.