2010-09-09 64 views
36

我试图附加到使用Visual Studio 2010 - > Debug - > attach to process命令的Windows服务。当我滚动进程列表时,我的Windows服务变灰,attcah按钮也变灰。我曾尝试将服务帐户更改为loacal服务,我的帐户等,但仍然显示为灰色。任何人有任何建议或无论如何解决这个问题?Visual Studio将调试器附加到Windows服务 - 附加灰显

+0

难道是因为服务处于发布模式? – pdiddy 2010-09-09 21:25:01

+0

好想,但我已经检查过,这是在调试模式。 – 2010-09-10 12:57:07

回答

56

我通常有同样的问题,我通过添加一个布尔到我的配置,触发调试启动照顾它。您可以通过调用此推出,重视你的服务赢得进程VS调试器实例:

System.Diagnostics.Debugger.Launch(); 

什么是好的是,你可以调用它,无论你在你的代码的愿望。

+1

我喜欢这样。从服务启动调试器的一个很好的简单方法。下一个问题是否有一种方法可以使用此方法远程连接,如果该服务安装在另一台计算机上? – 2010-09-13 14:57:45

+0

没有直接的答案,但这对我也有好处。我会看看是否有简单的方法来实现它,如果是的话,我会编辑我的答案以包含该解决方案。 – jlafay 2010-09-13 17:07:33

+1

有史以来最好的单行代码。 – Archer 2014-06-09 10:03:40

1

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

+0

试过这个,但没有运气。我可以附加到进程列表中列出的其他服务,而不是我需要的服务。 :) – 2010-09-10 12:57:50

0

您可能没有权限附加到该服务。你有桌面上的管理员权限吗?许多公司不允许这种默认设置,据称可以帮助确保他们的环境。

+0

是的,我有管理员权限,我试图右键单击并以管理员身份在VS中运行,看看是否有帮助。没有运气。 – 2010-09-10 12:58:32

+0

您是否有能力尝试这里描述的替代调试策略:http://msdn.microsoft.com/en-us/library/7a50syb3(VS.80).aspx? – 2010-09-10 13:17:11

+0

史蒂夫,感谢您的链接。我实际上看过那个页面,但没有看到底部的替代策略。我以前使用过一个控制台来测试服务,这是一个相当不错的选择。 – 2010-09-15 13:04:22

36

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

在这样做,我发现我有我的进程显示了两次,一个作为系统运行,一个运行在我的本地Windows登录。不知道为什么(对此的任何输入都会很棒!),但是我能够附加到没有显示出来的灰色,并且能够以这种方式穿过我的代码。希望这有助于!我会尽力在我获得时间时更新。

更新: 第二个是servicename.vshost.exe进程,正如Ozz在评论中指出的那样。

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

+4

这为我工作。我注意到的是,“灰色”出来的,实际上是myservice.vshost.exe进程,但我没有注意到,因为名字很长,最后被列隐藏了。使用PreethA指令显示的是真正的附加过程。我猜测2 PreethA看到1是他的myservice.vshost.exe – ozz 2012-01-25 09:41:38

+0

在我的情况下,我不得不选中'显示所有会话中的所有进程'的框。出于某种原因之后,它不再变灰。 – Flea 2013-04-17 15:25:08

+1

哇 - 谢谢......我有同样的,我有2跑步。 – coder32 2016-07-06 13:25:35

-2

Tools-> Attache to Process。只需检查左下角的所有用户的显示进程。按进程排序并尝试查找您的Windows服务

6

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

enter image description here

-2

我今天遇到同样的问题,有没有上述工作方案。事实证明,如果您有一个procdump会话监视该进程,则无法附加到进程。

0

我通过更改从RELEASE到DEBUG生成安装程序的方式解决了我的问题。然后,我安装了服务并按照通常情况附加。

1

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

祝你好运!

+0

这不应该是downvoted,这正是微软建议:https://docs.microsoft.com/en-us/dotnet/framework/windows-services/how-to-debug-windows-service-applications – Worthy7 2017-07-18 02:33:31

相关问题