【问题标题】:Windows Service terminated unexpectedlyWindows 服务意外终止
【发布时间】:2009-07-31 10:42:44
【问题描述】:

我有一个 Windows 服务,它有许多线程可以做一些工作。 在测试中一切都很顺利,直到有一次,我在事件查看器中看到“Windows 服务意外终止”。

如何尝试调试发生这种情况的位置? 我在正常情况下会捕获异常,但在这种情况下不会。

我不知道从哪里开始。

法学博士

【问题讨论】:

  • 你使用非托管库吗?

标签: c# multithreading windows-services


【解决方案1】:

在 OnStart() 回调中调用 System.Diagnostics.Debugger.Break()。当您的服务启动时,系统会提示您启动 Visual Studio 调试器。调试器打开后,您可以从那里进行调试。

【讨论】:

  • 我遇到的问题是 windows 服务死掉了,我无法重现它。调试它有什么帮助?某处抛出未处理的异常。我的代码中有 try/excepts,但显然没有捕获到异常。
  • 如果服务至少进入了您的 OnStart() 回调,然后按照我所说的那样调用 Debugger.Break()。一旦调试器弹出并在断点处停止,请转到“调试”菜单并选择“异常”选项。单击 Common Language Runtime Exceptions 的 Throw 列下的复选框。当您继续调试会话时,调试器将在异常引发的位置中断,而不是在异常被捕获的位置中断。
  • 您甚至可以将 Debugger.Break() 调用放在服务的入口点函数中,这在启动过程中(显然)比 OnStart() 回调更早。这样做以防您永远无法到达 OnStart() 回调。
  • 谢谢,不知道这种调试方式。这有帮助。我现在知道未处理的异常发生在哪里。
【解决方案2】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多