This post was most recently updated on January 5th, 2019.
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 the Entity Framework’s code-first migration’s (one of the ways for database initialization) 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: Launching 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:
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.
We can check for any attached debuggers with System.Diagnostics.Debugger.IsAttached. This let’s us only attach a new debugger instance when we don’t have one – and we’ll avoid recursive debugger attachments :)
Hence the following code:
if (_debug && System.Diagnostics.Debugger.IsAttached == false) System.Diagnostics.Debugger.Launch();
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 line by line, starting from where you launched it. You can also set breakpoints as you wish, and that should work as usual!
Got this awesome tip from Stack Overflow.
Latest posts by Antti K. Koskela (see all)
- Fixing “-2147024891, System.UnauthorizedAccessException” when accessing SharePoint SOAP Web Services - January 17, 2019
- “500 Internal Server Error” after switching a WordPress site to PHP 7.3 - January 15, 2019
- Azure Functions failing on “OPTIONS” call? Quick fix! - January 9, 2019
- Thanks for an amazing 2018! - December 28, 2018