Sequence contains more than one element

Launching a new debugger instance from code in Visual Studio

This post describes a quick solution to launching a new Visual Studio instance for debugging the code. Where I’ve found this exceptionally useful, has been in debugging code-first migration’s (one of the ways for database initialiation in .NET) Seed-method. It is by default undebuggable, as when you are running Update-Database you can’t really use a -debug switch or anything, and there’s really no way to launch the debugger. Hence the best you can do is using -verbose to get more information.

However, if you actually want to see what is happening in the code, here’s the solution.

Solution: launcing the debugger programmatically

Okay – this is quick and dirty, but still pretty darn cool. You can make your C# code launch a new Visual Studio instance to debug what you’re doing, by inserting the following line anywhere in your code:

System.Diagnostics.Debugger.Launch();

That alone is kind of dirty, and actually might end up causing recursive debugger launches – so you probably don’t want that! You’ll need a bit more code around the call, to make sure you only start debugging when it actually make sense.

In my case I had a variable _debug which, in some edge cases, was true, and if I didn’t have a debugger already attached, I wanted to attach one. Hence the following code:

if (_debug && System.Diagnostics.Debugger.IsAttached == false) System.Diagnostics.Debugger.Launch();

How to launch a Visual Studio debugger programmatically

This code will nicely fire open a new instance of Visual Studio and start debugging whatever’s at the function where you invoked the call. It’s kind of slow – it’ll actually open up a new instance of Visual Studio, and as we all know, that tends to take a while! After Visual Studio opens up, it should make it possible for you to debug row by row, starting from where you launched it. You can also set breakpoints as you wish, and that should work as usual!

References

Got this awesome tip from Stack Overflow.

The following two tabs change content below.

Antti K. Koskela

Solutions Architect / Escalations Engineer at Koskila / Norppandalotti Software / Valo Solutions
Antti Koskela is a proud digital native nomadic millenial full stack developer (is that enough funny buzzwords? That's definitely enough funny buzzwords!), who works as a Solutions Architect for Valo Intranet, the product that will make you fall in love with your intranet. Working with the global partner network, he's responsible for the success of Valo deployments happening all around the world. He's been a developer from 2004 (starting with PHP and Java), and he's been bending and twisting SharePoint into different shapes since MOSS. Nowadays he's not only working on SharePoint, but also on .NET projects, Azure, Office 365 and a lot of other stuff. This is his personal professional (e.g. professional, but definitely personal) blog.

1 thought on “Launching a new debugger instance from code in Visual Studio

Let me know your thoughts!