Don't have your non-debugger app use the debugging services just to get some cool functionality.
The managed debugging services are not just another library that picks up where BCL/ Reflection left off.
The BCL + reflection provides some basic ability to inspect your own process, including:
The managed debugging services (eg, ICorDebug, MDbg) provide some very cool additional functionality along these lines, including:
Every so often, somebody wants to add something like the above functionality to their app, finds that BCL/Reflection/etc doesn't do it, and then wants to pursue it via the debugging APIs.
Don't.
Specifically, the debugging APIs are for diagnostic tools. Don't use the debugging APIs for non-diagnostic production behavior.
Here are some reasons why you shouldn't use the debugging APIs for non-debugger functionality in production cases :
Same reasoning applies for other tool APIs like the profiler.
Now that said, what are good uses of the debugger APIs?