- PR -

サービスアプリケーションのデバッグ

投稿者投稿内容
MyHandle
常連さん
会議室デビュー日: 2007/04/15
投稿数: 39
投稿日時: 2007-07-24 17:56
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vbcon/html/vbtskdebuggingserviceapplications.asp

を参考にして、サービスアプリケーションのOnStartで実行する処理の
デバッグを試してみたのですがうまくいきません。

ソリューション内には
・目的の処理を行うプロジェクトA
・最初に実行するサービスB (AをOnstartで呼んでいる)
・ダミーのサービスC(BをOnstartで呼んでいる)
・セットアップ
の4つのプロジェクトを置きました。

やってみたことは、
・ソリューションのビルド
・InstallUtil で B,Cのサービスをインストール
・B,Cのサービスを開始
・Cのプロセスにアタッチ
・B,Aのデバッグをするためにブレークポイントの設定

Aが正しく動いているかどうかを確認したいのですが、上記ページを
読み返しトライしてみたのですが、うまくいきません。
上記ページや関連ページは読んだつもりですが、うまくいきません。

どなたかサービスアプリケーションのデバッグをVisualStudioのブレークポイントを
使いながらデバッグしたかたいらっしゃいますか?

Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-07-24 18:07
Cっていります?

OnStartでテキトーにSleepしましょう。スルッと行っちゃってるから止まらないのです。
MyHandle
常連さん
会議室デビュー日: 2007/04/15
投稿数: 39
投稿日時: 2007-07-24 18:45
Cのダミーサービスは、参考にしたmsdnに書いてあったので追加しています。
・・・本来は不要のものです。

サービスアプリケーションのデバッグはブレークすることは無理なのでしょうか?

Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-07-24 18:57
へ?だから、しばらく寝るの。
また、CからBをどうやって呼んでいるかわかりませんが(携帯なのでmsdnは見ていない)、Cにアタッチしても、Bはとめられませんよ?

私はOnStartの先頭で30秒ほど寝て、その間にアタッチしていました。
とっちゃん
大ベテラン
会議室デビュー日: 2005/07/19
投稿数: 203
投稿日時: 2007-07-24 19:10
デバッグしたいところの手前で、「アサートを起こさせる」では、アタッチできませんか?
Nativeだとこれでアタッチできるんですけど。


_________________
// とっちゃん(高萩 俊行)@わんくま同盟
// とっちゃん’Blog
// MS-MVP for Developer Tools - Visual C++
// WindowsInstallerの話題はhttp://www.freeml.com/msiまで
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2007-07-24 19:20
AとBをデバッグしたいなら、CではなくAとBにアタッチしなければなりませんが、できませんか?
Bはサービスなのでできるとして、AはBがプロセスを作ってるのでできないという事でしょうか。だったらプロセスが起動するまで待って、それからアタッチすればよい事なのですが。
_________________
囚人のジレンマな日々
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2007-07-25 06:40
1.デバッグ実行するのではなく、プロセスにデバッガをアタッチする手順がわからない
2.プロセスにアタッチしようとすると、エラーになる。(エラーメッセージくらい書いてほしい)
3.プロセスにアタッチしてブレークポイントを設置するのだけど機能しない。またはデバッガから停止できない。

どれでしょう?話の内容から察して、3.でしょうか?
リモートデバッガのインストールに失敗したときに、似たような状態になったことあります。再インストールしてなおりましたけど。
MyHandle
常連さん
会議室デビュー日: 2007/04/15
投稿数: 39
投稿日時: 2007-07-25 09:48
引用:

とっちゃんさんの書き込み (2007-07-24 19:10) より:
デバッグしたいところの手前で、「アサートを起こさせる」では、アタッチできませんか?
Nativeだとこれでアタッチできるんですけど。



Aのプロジェクトのほうで、Debug.Assert(false)を入れてみました。
サービス開始時に
トレースがダイアログで表示されたのですが、サービスのデバッグは通常この方法を
採るのでしょうか?

スキルアップ/キャリアアップ(JOB@IT)