【问题标题】:How to debug a buggy windows servic which stops immediately after it starts如何调试启动后立即停止的错误 Windows 服务
【发布时间】:2016-10-13 18:49:28
【问题描述】:

我目前发现一个问题,即我的一个项目(即 Windows 服务)在启动后立即停止。以前不是这样的。

更糟糕的是,我无法将服务附加到 Visual Studio,因为它在启动后立即停止。

我的系统是 Windows server 2012 R2,Visual Studio 是 2013。

我还有调试服务的方法吗?

【问题讨论】:

  • EventLog (Application, Security) 有什么线索吗?
  • 是的,但是错误信息没有太大意义。它只是说:SimpleInjector.ActivationException.

标签: visual-studio visual-studio-2013 windows-services visual-studio-debugging windows2012


【解决方案1】:

可以直接在调试器下启动服务。为此,您可以修改服务启动命令 (sc config binPath=),也可以使用 GFlags 更改服务映像以在调试器下启动。在这两种情况下,您的调试器都将在后台运行,然后您需要远程访问它。

但通常您可以从转储中解决问题(如果有的话)。通常只需从与服务相同的帐户启动服务可执行文件即可揭示问题。

最后不要忘记printf 的力量。添加日志记录并将问题与日志隔离开来。您的服务应该这样做无论如何

【讨论】:

  • 你的意思是我需要使用sc config binPath 到visual studio build 文件夹下的二进制文件,然后在Visual Studio 中开始调试?
【解决方案2】:

我刚刚在 MSDN 中找到了答案。

https://msdn.microsoft.com/en-us/library/cktt23yw.aspx

添加以下代码:

    System.Diagnostics.Debugger.Launch();

在 OnStart 方法的最开始。然后运行 ​​net start serviceName(需要管理凭据)

【讨论】:

  • 既然您已经解决了这个问题,请将您的回复标记为答案,这将是一个很好的解决方案,可以帮助遇到与您相同问题的其他社区成员:)
  • 明天我会这样做(系统现在不允许我这样做)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-11
  • 1970-01-01
  • 1970-01-01
  • 2011-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多