NTサービスプログラムのデバッグ
------------本delphi 6アプリケーション開発ガイドからの抜粋
サービスプログラムをデバッグするには、2つの方法があります。 1つ目は、サービスの動作部分を別のクラスで定義し、別のプログラムでデバッグすることです。 2番目のタイプは、サービスが実行されているときにデバッグすることです。最初のアプローチは、通常のプログラムにサービス作業を担当するクラスを追加することが、サービスの動作をテストし、ワークベンチテストのアイデアと一貫性を維持する最も簡単な方法です。
最初の方法を使用して、2つのプログラムを作成するときにテストします:ServiceAppとTestMailer(この本のCDでも入手できます)。同じコンポーネントTIDMESSAGE、TTIMER、およびTIDSTMPを別のプログラムに追加し、メール送信者を作成します。 TestMailerプログラムの欠陥が見つかると、すべての変更がサービスプログラムに更新されます。ワークベンチを作成したり、プログラムをテストしたりするだけで簡単ですが、常に十分ではありません。
サービスプログラムをテストする2番目の方法は、サービスプログラムをインストールして実行し、Delphiの実行プロセスに添付することです。これらの手順に従って、サービスの実行中にServiceApp.exeプログラムをデバッグします。
1. Serviceapp.exe /Command Lineにインストールして、サービスプログラムをインストールします。
2。 MyServiceを見つけて、[Start Service Toolbar]ボタンをクリックします(手順はWindows 2000に適用できます。WindowsNT4.0の手順はほぼ同じです)。
3。Delphiを実行します。
4. ServiceApp.DPRプロジェクトをロードします。
5。delphiのプロセスメニュー項目を添付します。
6. [下の図に示すように)[プロセス]ダイアログボックスへの添付ボックスで、[システムプロセスの表示]チェックボックスを選択します。
7. serviceapp.exeを見つけて、[添付]ボタンをクリックします。
8。Delphiで、プロジェクトソースファイルのOnexecuteイベントメソッドのブレークポイントを設定し、F9を押します。
図B.3 [プロセスへの添付]ダイアログボックスは、Delphiデバッガーを実行中のプロセスに添付できます。
Delphiは、デバッガを実行中のサービスプログラムに添付し、CPUダイアログを開きます。アセンブリ言語を非常にスムーズに読んでいない限り、CPUビューはあまり役に立ちません。しかし、サービスプログラムがブレークポイントに実行されると、ブレークポイントで停止し、Delphiコードビューに切り替えます。ユーザーがDelphiを介してランニングサービスの制御を取得した後、他のプログラムのようにサービスをステップおよびデバッグすることができます。
注:開発者として、PCに管理者の権利が必要です。信じられないほど、一部の組織は、開発者によって書かれたコードを信頼していますが、独自のPCを管理することを許可していません。現在の経済状況はまだ良いので、新しい仕事を見つけてください。
Delphi Helpの文書は、許可が不十分な場合、サービスプロセスに添付することが失敗する可能性があると述べています。 PCに管理者の権利がある場合、添付のサービスプロセスは常に正常に機能します。ヘルプトピック「デバッグサービス」には、レジストリ設定の変更を伴うサービスをデバッグする3番目の方法が含まれています。
Ye Zhengsheng
2005-05-22