1

目前,我的代码中有以下语句允许我调试 Windows 服务:

#If DEBUG Then
        System.Diagnostics.Debugger.Launch()
#End If

我把它放在 OnStart 方法中,当我启动服务时,我可以附加到我的 Visual Studio 实例。目前我有一个失败的实例。我在虚拟机上安装了该服务,但遇到以下错误:

MyService.exe [376] 中发生未处理的异常(“为用户启动”)。即时调试此异常失败并出现以下错误:调试器无法启动,因为没有用户登录。

我在本地机器上调试这样的服务从来没有遇到过问题,所以我不确定发生了什么。用户设置为登录,LocalSystem好像这很重要。我通过管理员登录到虚拟机。

4

1 回答 1

0

我最终在OnStart方法中添加了以下语句:

#If DEBUG Then
    While True

    End While
#End If

这使我可以手动附加到 Visual Studio 中的进程并在 while 循环中设置断点。一旦遇到断点,我就会手动跳出 while 循环以继续执行应用程序的其余部分。

于 2012-10-30T12:02:28.163 回答