【问题标题】:Attaching Visual Studio debugger to Windows service -- "attach" greyed out将 Visual Studio 调试器附加到 Windows 服务——“附加”灰显
【发布时间】:2010-09-09 20:38:54
【问题描述】:

我正在尝试使用 Visual Studio 2010 → Debug附加到进程 命令附加到 Windows 服务。当我滚动浏览进程列表时,我的 Windows 服务显示为灰色,附加按钮也显示为灰色。

我尝试将服务帐户更改为本地服务、我的帐户等,但它仍然是灰色的。有没有办法解决这个问题?

【问题讨论】:

  • 会不会是服务处于发布模式?
  • 好主意,但我已经检查过它是否处于调试模式。

标签: c# visual-studio-2010 windows-services


【解决方案1】:

我通常有同样的问题,我通过在我的配置中添加一个触发调试启动的布尔值来解决它。您可以通过调用以下命令启动附加到 Windows 服务进程的 Visual Studio 调试器实例:

System.Diagnostics.Debugger.Launch();

很好的是,您可以在代码中任意位置调用它。

【讨论】:

  • 我喜欢这个。一种从服务启动调试器的简单方法。下一个问题,如果服务安装在另一台机器上,有没有办法使用这种方法远程连接?
  • 没有立即答案,但这对我也有好处。我会看看是否有一种简单的方法来实现它,如果是这样,我将编辑我的答案以包含该解决方案。
【解决方案2】:

在 Visual Studio 2010 中,在“附加到进程”对话框中,选中底部的两个复选框“显示所有用户的进程”和“显示所有用户的进程”会话'。

在这样做时,我发现我的进程显示了两次,一次以 System 身份运行,另一次在我的本地 Windows 登录名下运行。我不知道为什么(对此的任何输入都会很棒!),但我能够附加到出现的未变灰的那个,并且还能够以这种方式单步执行我的代码。

第二个是 Ozz 在 cmets 中指出的 servicename.vshost.exe 进程。

如果您仍然看不到它,请确保您的服务仍在运行。有时,您的服务可能会启动并自动停止,因此不会显示在附加到选项中。

【讨论】:

  • 这对我有用。我注意到的是,“灰色”出来的实际上是 myservice.vshost.exe 进程,但我没有注意到,因为名称很长并且结尾被列隐藏了。使用 PreethA 指令显示的是真正的附加过程。我猜 PreethA 看到的 2 个中的 1 个是他的 myservice.vshost.exe
  • 就我而言,我必须选中“显示所有会话中的所有进程”框。出于某种原因,这样做后它不再灰显。
【解决方案3】:

我不仅必须选择show processes from all usersshow processes in all sessions 复选框;我还必须单击Select 按钮,然后选择Managed 代码。

【讨论】:

    【解决方案4】:

    确保以管理员身份运行 Visual Studio。它需要管理员权限才能附加到正在运行的服务。

    【讨论】:

    • 试过这个但没有运气。我可以附加到进程列表中列出的其他服务,但不是我需要的。 :)
    【解决方案5】:

    安装 Windows 服务后,启动它。然后在 Visual Studio 中打开 附加到进程 窗口 (Alt + Ctrl + P),找到您的进程并选择它并点击窗口底部的附加按钮

    【讨论】:

    • 这不应该被否决,这正是微软的建议:docs.microsoft.com/en-us/dotnet/framework/windows-services/…
    • 真的! .. 此外,我放入了一个 Thread.Sleep(25000) 来延迟执行并给我足够的时间来附加到进程。当然,我是在调试模式下构建的,并将粘贴的 exe 和 pdb 文件复制到部署文件夹中。
    【解决方案6】:

    您可能没有附加到服务的权限。你有桌面的管理员权限吗?许多公司默认情况下不允许这样做,据说是为了帮助保护他们的环境。

    【讨论】:

    • 是的,我有管理员权限,我尝试右键单击并在 vs 中以管理员身份运行,看看是否有帮助。没有运气。
    • 您是否可以尝试此处描述的备用调试策略:msdn.microsoft.com/en-us/library/7a50syb3(VS.80).aspx
    • 史蒂夫,感谢您的链接。我实际上看过那个页面,但没有看到底部的替代策略。我之前使用过控制台来测试服务,这是一个相当不错的选择。
    • 欢迎。我很想知道这是如何为您解决的。
    【解决方案7】:

    我通过将生成设置的方式从 RELEASE 更改为 DEBUG 解决了我的问题。然后,我安装了服务并照常附加。

    【讨论】:

      【解决方案8】:

      我今天遇到了同样的问题,以前的解决方案都不起作用。事实证明,如果您有一个 ProcDump 会话监视该进程,则无法附加到该进程。

      【讨论】:

        【解决方案9】:

        使用菜单工具附加到进程。只需检查左下角所有用户的显示进程。按进程排序并尝试查找您的 Windows 服务。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-26
          • 2019-03-27
          • 2016-04-24
          • 1970-01-01
          • 2011-02-14
          • 2014-08-27
          相关资源
          最近更新 更多