MDAs - Managed Debugging Assistants

MDAs are a new feature in VS 2005. If you go to "Debug -> Exceptions..." in the VS IDE you will get a Dialog that says Exceptions and in the list you would see "Managed debugging Assistants" - Expand the list and you will see a number of options like "AsynchronousThreadAbort", "BindingFailure", "CallbackOnCollectedDelegate" et al. These in short are the Managed Debugging Assistants and you can select which one of these you want to enable.

So what are MDAs? Why do we need them? How do we use them?

An MDAs as the name suggests is a feature for the debugging managed code. From the list you will notice that there are a number of known pitfalls when writing managed code. These assistants are precisely meant to help you locate these pitfalls during the development and debugging stages. There is a very good blog post by Mike Stall about MDAs at 

I will just summarize a few things about MDAs to make it short

1) MDAs are not Error Messages or Exceptions.

2) MDAs are fired by the CLR and caught by the Debugger.

3) In most cases turning off the MDA will let you proceed forward. In most case this would not be an issue - but in many cases the application may crash under a particular usage scenario.

4) At present you cannot define custom MDAs

5) You can configure the MDAs based on the instructions at:,VS.80).aspx


Hope this helps - let me know if you have additional queries about MDAs - I will try to find the answers.