如何调试在启动后立即停止的错误 windows 服务
How to debug a buggy windows servic which stops immediately after it starts
我目前发现一个问题,即我的一个项目(windows 服务)在启动后立即停止。以前不是这样的。
更糟糕的是,我无法将服务附加到 Visual Studio,因为它在启动后立即停止。
我的系统是 Windows 服务器 2012 R2,Visual Studio 是 2013。
我有调试服务的地方吗?
您可以直接在调试器下启动服务。为此,您可以修改服务启动命令(sc config binPath=
) or you can use GFlags 以更改服务映像以在调试器下启动。在这两种情况下,您的调试器都将在后台运行,然后您需要远程访问它。
但通常您可以从转储中解决问题(如果有的话)。通常只需从与服务相同的帐户启动服务可执行文件就会发现问题。
最后别忘了printf
的力量。添加日志记录并从日志中隔离问题。您的服务应该这样做 无论如何。
我刚刚在 MSDN 中找到了答案。
https://msdn.microsoft.com/en-us/library/cktt23yw.aspx
添加以下代码:
System.Diagnostics.Debugger.Launch();
在 OnStart 方法的最开始。然后运行net start serviceName(需要管理凭证)
我目前发现一个问题,即我的一个项目(windows 服务)在启动后立即停止。以前不是这样的。
更糟糕的是,我无法将服务附加到 Visual Studio,因为它在启动后立即停止。
我的系统是 Windows 服务器 2012 R2,Visual Studio 是 2013。
我有调试服务的地方吗?
您可以直接在调试器下启动服务。为此,您可以修改服务启动命令(sc config binPath=
) or you can use GFlags 以更改服务映像以在调试器下启动。在这两种情况下,您的调试器都将在后台运行,然后您需要远程访问它。
但通常您可以从转储中解决问题(如果有的话)。通常只需从与服务相同的帐户启动服务可执行文件就会发现问题。
最后别忘了printf
的力量。添加日志记录并从日志中隔离问题。您的服务应该这样做 无论如何。
我刚刚在 MSDN 中找到了答案。
https://msdn.microsoft.com/en-us/library/cktt23yw.aspx
添加以下代码:
System.Diagnostics.Debugger.Launch();
在 OnStart 方法的最开始。然后运行net start serviceName(需要管理凭证)