Windows Service立即启动和停止。如何调试?

时间:2018-08-06 16:20:13

标签: windows visual-studio service windows-services

我建立了一个Windows服务,当我在Visual Studio中运行它时,它运行良好。我还为该服务创建了一个安装程序。除了启动服务本身以外,其他一切都正常。它立即关闭,告诉我它已经停止了。

我该如何调试?我认为我正在使用的参考文件或附加的DLL可能存在一些问题,但我找不到调试我的服务的方法。

WinDbg预览处于启用状态,但是它只能调试正在运行的服务,而我没有。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

在服务的System.Diagnostics.Debugger.Launch()函数,构造函数或Main()回调中放置对OnStart()的调用。从服务控制管理器(SCM)启动服务时,将显示一个对话框,允许您启动Visual Studio的新实例或附加到现有实例。选择所需的实例(我通常选择现有实例),该服务应在您的编程断点处停止。您可以从那里调试。

如果程序断点未命中,则意味着两件事之一。首先,这可能意味着Windows服务无法正确启动,因为它找不到必要的.dll文件。在这种情况下,请确保Windows服务与所需的.dll文件位于同一目录中,并且/或者确保必需的.dll文件位于库路径中。另一个问题可能是您在系统上没有调试服务所需的权限(例如,您是系统上的本地管理员吗?)。与系统管理员一起确定所需的权限,确保您的帐户具有这些权限,重新启动系统,然后重试。

HTH