2009年06月06日

サービスプログラムのデバッグ方法(Visual Studio 2005)

Windowsサービスを作成したが、動作がおかしいのでデバッグすることになった。
その時のデバッグ操作が結構てこずったので注意書きとしてまとめておく。

デバッグの方法はWindowsプログラムとはちょっと違う。WindowsプログラムではDebugモードで実行させるだけで済むがサービスプログラムは実際にサービスとして稼動させてから開発ツールでそのプロセスを監視させて行う。
ここで注意すべきなのはWindowsプログラムと同様にビルドの構成をDebugにしておく必要があることだ。(過去ログ:ブレークポイントで止まらないを参照)

サービスプログラムを実行させるには
(Windows)\Microsoft.NET\Framework\(バージョン)\installutil.exe を使ってインストールする必要がある。コマンドプロンプトから実行するので私の場合は、このコマンドだけをサービスプログラムの実行ファイル(exe)のあるフォルダ(bin\debug)にコピーして、そこからインストールしている。

InstallUtil.exe (サービスプログラム名).exe

※Vistaの場合コマンドプロンプトを管理者として実行させておかないとインストールに失敗する。

インストール後、サービスがまだ開始されていないのでコントロールパネルの管理ツールからサービスマネージャを開いて開始させる。

あとはデバッグポイントを設定し、「ツール」メニューにある「プロセスにアタッチ」を開き「選択可能なプロセス」から当サービスプログラムを選択し「アタッチ」ボタンをクリックする。このとき「すべてのユーザーからのプロセスを表示する」と「すべてのセッションのプロセスを表示する」にチェックを入れておかないとサービスプログラムは表示されない。
プロセス一覧には(プログラム名).vshost.exeというファイル名がグレー表示しているが、これはサービスプログラムのプロジェクトを開いている開発ツールのことだ。

なお、上記手順から判るようにサービスプログラムの起動時(OnStartイベント)のデバッグは出来ない。(開始されていないサービスは選択可能なプロセス一覧には表示されず、表示されたときは既にOnStart内のコードは終了しているから)

デバッグで問題点が見つかり修正する場合、一時サービスを停止しておかないとプログラムの置き換えができない。またサービスをアンインストールするときも停止する必要がある。
アンインストールのコマンド以下の通り

InstallUtil.exe /u (サービスプログラム名).exe

posted by なっちゃん at 11:19| 静岡 ☔| Comment(0) | TrackBack(0) | VB.NET Tips | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/120936056
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。