MDAs are asserts (probes) in the CLR and in the base class libraries (BCL) that can be turned on or off. When enabled, they provide information on the CLR"s current runtime state and on events that you as a developer could not otherwise access. Some even modify runtime behaviors to help expose otherwise very hard to find bugs. The Microsoft® .NET Framework 2.0 includes 42 of these MDAs, some more useful than others, but all of them very powerful debugging aids that can help you track down truly insidious problems at run time
In .NET programming, the ability to see what’s going on at the machine level usually poses a problem only when we’re working with low-level functionality like loading assemblies or interoperating with unmanaged code. This isn’t surprising, as it’s usually the "edges"--the interfaces between components--that usually end up being the problematic parts of any significant program.
.NET 2.0 introduced Managed Debugging Assistants(MDAs) which are probes into the common language runtime (CLR) and base class libraries (BCL). These probes, which you can turn on and off with configuration files, provide information on the CLR’s current state and on events--information that you could not normally access. Some MDAs also modify behavior to help expose bugs that would otherwise be very difficult to isolate.
ref:
Diagnosing Errors with Managed Debugging Assistants -
http://msdn.microsoft.com/en-us/library/d21c150d(VS.80).aspx
Let The CLR Find Bugs For You With Managed Debugging Assistants -
http://msdn.microsoft.com/en-us/magazine/cc163606.aspx
MDA (Manged debug Assistants) - http://www.informit.com/guides/content.aspx?g=dotnet&seqNum=500
Open Source Software in C# - http://csharp-source.net/