In most times, while I do dogfood/test VisualStudio 2005, I put them under debugger to monitor several things...
- First Chance AV
- Unhandled Exception
- Userbreaks from System to process under debugger
- Appverifier(a tool which is part of Application Compatibility Toolset) notification via Int3(User break)
If you are using debug build for testing, you don't have to run your app under debugger in most of cases because your debug build may have enough asserts to show errors in early stage.
However for many QAs, using retail build which will be shipped to customer is more general. so monitoring app with Debugger and appverifier is very interesting ways to do.
For example, I saw fair amount of issues that the thread by RPC call crashes and the AV caught by RPC handler. so caller may handle it without actual crash but it ends up as random and catastropic errors. however under debugger, you can see this kind of issues. so you can easily figure out the real cause of random issues.
Adding to this, with various Appverifier options, you can expose memory and handle issues much easier by reducing the tolerance of memory/handle mis-usages. it is really useful to improve overal stability of your product.