【发布时间】:2010-04-09 00:03:05
【问题描述】:
我知道如何将调试器附加到 Windows 服务,但我似乎无法附加到正在由 Windows 安装程序安装和启动的调试器。我试过了:
设置线程.Sleep(TimeSpan.FromSeconds(30));在开始时,但是当我尝试在 Visual Studio 中附加时,服务的名称不会作为选项出现。这通常有效,服务的名称会显示在列表中,但使用安装程序时不会。
设置 Debugger.Break 和 Debugger.Launch。两者都没有真正做任何事情。
我可以做些什么来调试我的服务?
更新:
我在服务的第一行添加了一个 Thread.Sleep 30 秒,当安装程序提示我失败时应该做什么时,我在服务列表中启动该服务(因为它没有已删除),它立即失败,无需等待 30 秒。它安装的文件是最新的(他们有正确的修改时间)。如果我在同一个项目中从我的测试应用程序运行同一个客户端,则会出现 30 秒的暂停,但由于某种原因,安装程序出现了问题。
我真的不知道如何调试这个,令人沮丧的是这个服务曾经正常工作。
答案:
检查应用程序日志向我显示了正在引发的异常。原来我不小心破坏了我的安装程序中的一个文件,这解释了为什么我的调试技术都不起作用。恢复文件后,我就可以像往常一样使用 Visual Studio 进行附加(使用 30 秒的暂停来给我时间)。
【问题讨论】:
-
您的服务是否安装失败?一些日志文件可能有用。我不相信 OnStart 通常被称为安装的一部分。
-
嗯,它特别说它无法启动。另外,该服务位于服务列表中,并且文件已就位。我在哪里可以找到这些日志文件?我检查了安装目录,以及InstallUtil.exe所在的目录。
标签: visual-studio windows-services installation debugging