The .NET Framework has unmanaged debugging and profiling APIs that I assume people/companies are familiar with. If someone was implementing debugger and profiler support for a new CLI runtime¹:
- What would be the pros/cons of basic their operation on these existing APIs?
- These APIs retain backward compatibility² by incrementing interface extension numbers to indicate support for later features. I would have the opportunity to combine these interfaces and remove deprecated methods since there is no "backwards" to be compatible with. Would that be a good idea? One point of interest here is this would not remove source code compatibility with existing debuggers because my system would require the debugger be implemented in managed code & managed API, and the existing ones are written in unmanaged code.
- Are there other documented debugging/profiling APIs available? Is their feature set anywhere near as complete as the ones mentioned above?
¹ I like working advanced, long-term projects at home to keep me learning and thinking about solutions to large problems. I know there are others available, but I want to work on one to really see what's involved, and I'm already a decent way into it.
² I can't find a link describing this, but it's extensively used in the Visual Studio API as well. I believe I saw it in a "COM interface naming guidelines" document? You see it as the ICorDebugClass2
interface showing up to extend ICorDebugClass
interface without altering the original.