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

[戻る]
as [E-Mail] 2003/02/24(月) 20:41:24
はじめまして、as@VC初心者です。よろしくお願い致します。

環境: WinNT4.0 SP6/VC5.0/MFC未使用

WinNTサービスから起動されるアプリケーションのデバッグを行っております。

ソースコード中にdebugbreak関数を用いてデバッグを行おうとしているのですが、 
「runtime error   c:\...\msdev.exe  abnormal program termination」のダイアログが
表示されてしまいデバッグが行えない状態でして、こういう場合の対応策について何かご存知の
方はいらっしゃらないでしょうか?

又、他にサービスアプリケーションのデバッグについて良い方法があれば教えていただければと
思います。

よろしくお願い致します。

弟子 2003/02/26(水) 17:54:53
OutputDebugString関数でデバッガを起動しながらチェックを行います。
私が愛用しているのは"デバッグもに太"です。

基本的に
1) サービス登録
↓
2) 起動
↓
3) 変数チェック
↓
4) 停止
↓
5) ソース変更
↓
6) 起動 …

以下繰り返しです。

単体モジュールのテストを正確に行うのが完成の近道だと思います。
あと、私の場合サービスの機能のみを抽出して非サービスプログラムで組み、
十分にテストをしてからサービス機能をつけました。

あまり参考にならないかも知れませんが、私はこんな感じでやりました。

as [E-Mail] 2003/02/28(金) 09:02:52
[[解決]]
弟子さん,はじめまして。

デバッグの仕方について教えていただき,誠にありがとうございます。
「デバッグもに太」ですね。今後使用させていただきたいと思います。

自分でもいろいろ調査を行ってみたところ,「コントロールパネル」
「サービス」で,対象となるサービスの「スタートアップ」から
「デスクトップとの会話をサービスに許可」にチェックすると
サービスから起動を行ってもデバッガが起動されるようになりました。

やはりOSについての知識も詳しくならないといけないようですね。

弟子さんももし機会があれば試してみてください。

それでは失礼します。

弟子 2003/02/28(金) 10:52:36
>デスクトップとの会話をサービスに許可」にチェック

それは知りませんでした。今後参考にさせて頂きます。

↓デバッグ用に作った関数です。

// MFCのTRACEマクロを再現
// 1024を越えないように…(苦
void Trace( const char *format, ... )
{
    char s[ 1024 ] = {0};

    va_list args;
    va_start( args, format );
    vsprintf( s, format, args );
    OutputDebugString( s );
    va_end( args );
}

古いスレッドには追加発言できません。