2010-09-09 140 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

相關問題