I know how to attach a debugger to a windows service, but I can't seem to get attached to one that's being installed and started by a windows installer. I've tried:
Setting a Thread.Sleep(TimeSpan.FromSeconds(30)); at the beginning of the on-start, but when I try to attach in Visual Studio, the name of the service does not appear as an option. This normally works, the service's name shows up in the list, but when using the installer it does not.
Setting a Debugger.Break and Debugger.Launch. Neither really do anything.
What can I do to debug my service?
Update:
I added a Thread.Sleep for 30 seconds as the first line of the service, and when the installer is prompting me for what it should do when it fails, I start the service in the service list (since it hasn't been removed), and it fails instantly, without the 30 second wait. The files it installs are the latest (they've got the right modified time). The 30 second pause occurs if I run the same client from my test app in the same project, but for some reason the installer is screwing with something.
I'm really not sure how to debug this, and the frustrating thing is that this service used to work properly.
Answer:
Checking the application log showed me the exception that was being thrown. It turned out I had accidentally clobbered a file in my installer, which explains why none of my debugging techniques worked. Once I restored the file, I was able to attach with visual studio as normal (using a 30 second pause to give me time).