web-dev-qa-db-ja.com

Visual StudioデバッガーをWindowsサービスにアタッチする-「アタッチ」がグレー表示される

Visual Studio 2010→デバッグプロセスにアタッチコマンドを使用してWindowsサービスにアタッチしようとしています。プロセスのリストをスクロールすると、Windowsサービスがグレーアウトされ、アタッチボタンもグレーアウトされます。

サービスアカウントをローカルサービスやアカウントなどに変更しようとしましたが、グレー表示のままです。これをトラブルシューティングする方法はありますか?

39
Kevin McPhail

私は通常同じ問題を抱えており、デバッグ起動をトリガーするブール値を構成に追加することでそれを処理します。これを呼び出すことにより、WindowsサービスプロセスにアタッチするVisual Studioデバッガーインスタンスを起動できます。

System.Diagnostics.Debugger.Launch();

すばらしいのは、コードのどこでも好きなときに呼び出すことができることです。

62
jlafay

Visual Studio 2010の[プロセスにアタッチ]ダイアログで、下部にある[すべてのユーザーからのプロセスを表示する]および[すべてのセッションのプロセスを表示します '。

それを行うと、プロセスが2回表示されることがわかりました。1つはSystemとして実行され、もう1つはローカルWindowsログインで実行されます。理由はわかりません(これに関する入力はどれも素晴らしいことです!)が、表示されているグレー表示されていないものにアタッチすることができ、この方法でコードをステップスルーすることもできました。

2番目は、Ozzがコメントで指摘したように、servicename.vshost.exeプロセスでした。

それでも表示されない場合は、サービスが実行されていることを確認してください。場合によっては、失敗したサービスが開始され、自動的に停止することがあります。そのため、オプションへの接続に表示されません。

39
PreethaA

show processes from all usersおよびshow processes in all sessionsチェックボックスを選択する必要があるだけでなく、 Selectボタンをクリックして、Managedコードを選択する必要もありました。

enter image description here

7
Flea

Windowsサービスをインストールしたら、開始します。次に、Visual Studioでプロセスにアタッチウィンドウ(Alt + Ctrl + P)、プロセスを見つけて選択し、ウィンドウの下部にあるAttach Buttonをクリックします。

2
ghhp

管理者としてVisual Studioを実行していることを確認してください。実行中のサービスにアタッチするには管理者権限が必要です。

2
Reed Copsey

セットアップの生成方法をRELEASEからDEBUGに変更することで問題を解決しました。そして、私はいつものようにサービスをインストールして接続しました。

0
alansiqueira27

サービスにアタッチする権限がない場合があります。デスクトップで管理者権限を持っていますか?多くの企業は、デフォルトではこれを許可していません。おそらく環境の保護を支援するためです。

0
Steve Townsend