Debugging services are complicated. These days, I prefer to write a class library that does all the work, a service that just calls one method of the class library, and test posting (usually a console application) that calls the same method. Thus, I can run the test harness in the debugger and fix most of the errors.
The two messages that you receive when your service does not start is the one you just received and “it was started but then stopped,” which usually means that it threw an exception. Usually you mean a bad loop or a too long dream if you write “wake up” and see if it is still midnight. ”But really, running it under the debugger from the test harness is the best way to find out what is happening.