我现在发现一个问题,我的一个项目,是windows服务,启动后立即停止,以前不是这样的。更糟糕的是,我无法将该服务附加到VisualStudio,因为它在启动后立即停止。我的系统是Windows服务器2012 R2和Visual Studio是2013.有什么方法可以让我调试服务吗?
6za6bjd01#
你可以直接在调试器下启动服务。要实现这一点,你可以修改服务启动命令(sc config binPath=),或者你可以使用GFlags来改变服务映像以在调试器下启动。在这两种情况下,你的调试器都将在后台,然后你需要远程控制它。但是通常你可以从转储文件中解决这个问题,通常简单地从与服务相同的帐户启动服务可执行文件就会发现这个问题。最后,不要忘记printf的强大功能。添加日志并从日志中隔离问题。您的服务应该这样做。
sc config binPath=
printf
gijlo24d2#
我刚刚在MSDN上找到了答案。https://msdn.microsoft.com/en-us/library/cktt23yw.aspx添加以下代码:
System.Diagnostics.Debugger.Launch();
在OnStart方法的最开头。然后运行net start serviceName(需要管理凭据)
2条答案
按热度按时间6za6bjd01#
你可以直接在调试器下启动服务。要实现这一点,你可以修改服务启动命令(
sc config binPath=
),或者你可以使用GFlags来改变服务映像以在调试器下启动。在这两种情况下,你的调试器都将在后台,然后你需要远程控制它。但是通常你可以从转储文件中解决这个问题,通常简单地从与服务相同的帐户启动服务可执行文件就会发现这个问题。
最后,不要忘记
printf
的强大功能。添加日志并从日志中隔离问题。您的服务应该这样做。gijlo24d2#
我刚刚在MSDN上找到了答案。
https://msdn.microsoft.com/en-us/library/cktt23yw.aspx
添加以下代码:
在OnStart方法的最开头。然后运行net start serviceName(需要管理凭据)