将Visual Studio调试器附加到Windows服务 - “附加”灰色

时间:2010-09-09 20:38:54

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

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

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

9 个答案:

答案 0 :(得分:60)

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

System.Diagnostics.Debugger.Launch();

有什么好处,你可以在代码中的任何地方调用它。

答案 1 :(得分:38)

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

在执行此操作时,我发现我的进程显示两次,一次以 System 运行,另一次在本地Windows登录下运行。我不知道为什么(对此的任何输入都会很棒!),但我能够附加到那些出现的非灰色的那个,并且能够以这种方式逐步完成我的代码。

第二个是ozz在评论中指出的servicename.vshost.exe进程。

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

答案 2 :(得分:7)

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

enter image description here

答案 3 :(得分:2)

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

答案 4 :(得分:2)

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

答案 5 :(得分:0)

您可能无权附加到服务。您是否拥有桌面管理员权限?许多公司默认不允许这样做,据说可以帮助保护他们的环境。

答案 6 :(得分:0)

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

答案 7 :(得分:-2)

使用菜单工具附加到流程。只需检查左下方所有用户的显示流程即可。按进程排序,然后尝试查找您的Windows服务。

答案 8 :(得分:-2)

我今天遇到了同样的问题,以前的解决方案都没有。事实证明,如果您有ProcDump会话监控该流程,则无法附加到流程。