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

Windows Service starting and stopping immidiately. Howto Debug?

我构建了一个 windows 服务,当我在 Visual Studio 中 运行 它工作正常。我还为该服务创建了一个安装程序。除了服务本身的启动外,一切正常。它立即关闭,告诉我它已被停止,仅此而已。

我该如何调试它?我认为我正在使用的引用或附加的 DLL 可能存在一些问题,但我无法调试我的服务。

WinDbg Preview 是可选的,但它只能调试我没有的 运行ning 服务。

有什么想法吗?

在服务的 Main() 函数、构造函数或 OnStart() 回调中调用 System.Diagnostics.Debugger.Launch()。当您从服务控制管理器 (SCM) 启动服务时,您将看到一个对话框,允许您启动 Visual Studio 的新实例或附加到现有实例。 Select 你想要的那个(我通常 select 现有的实例),服务应该在你的程序断点处停止。您可以从那里进行调试。

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

HTH