Debugging Windows Service Tip

This is a quick tip on debugging Windows services or anything that runs as a seperate thread.  In other words, if you have to attach to that process to debug it, and you have the source code, the following tip will make it easy to debug.

A Windows service usually runs automatically, it is designed to run as a continuous service and, therefore, spawns one or more threads to do the actual work. This happens very quickly. As such, it is difficult to attach to the process (Alt+P) in time to properly debug the service and attach during a specific part of the execution. As a multi-threaded app, it becomes cumbersome and painful to debug. Fortunately since Visual Studio 2015 that we can vote invoke that allows us to attach to the process through the Visual Studio just-in-time debugger. It’s super simple, call:

System.Diagnostics.Debugger.Launch();

Use this call anywhere in your code where you want the code to break into Visual Studio.  It will invoke a Visual Studio just-in-time debugger prompt:

Visual Studio 2015 Just-In-Time Debugger
Visual Studio 2015 Just-In-Time Debugger

Make your selection and debug.  Happy coding my friends.

For more information: https://msdn.microsoft.com/en-us/library/cktt23yw.aspx