If the service is started with the single argument "debug" eg by setting
the Start parameters of the service in services.msc, we delayed startup
in service_main() until the await_debugger variable is set to false.
Attach to nssm.exe with your debugger of choice, set a breakpoint within
that function and poke the variable when ready.
Beware that the behaviour of the service manager when service_main
doesn't complete operation promptly is undefined.
nssm_service_t *service = alloc_nssm_service();\r
if (! service) return;\r
\r
+ static volatile bool await_debugger = (argc > 1 && str_equiv(argv[1], _T("debug")));\r
+ while (await_debugger) Sleep(1000);\r
+\r
if (_sntprintf_s(service->name, _countof(service->name), _TRUNCATE, _T("%s"), argv[0]) < 0) {\r
log_event(EVENTLOG_ERROR_TYPE, NSSM_EVENT_OUT_OF_MEMORY, _T("service->name"), _T("service_main()"), 0);\r
return;\r