サービス アプリケーションの手動デバッグ
開始後にサービス アプリケーションに手動でアタッチすることは、実行中のユーザー モード プロセスのデバッグとよく似ています。
TList ツールを /s オプションを付けて使用して、実行中の各プロセスと各プロセスでアクティブなサービスのプロセス ID (PID) を表示します。
デバッグするサービス アプリケーションが単一のプロセス内で他のサービスと組み合わされている場合は、デバッグする前に分離する必要があります。 これを行うには、「サービスの分離」で説明されている手順に従います。 この手順の最後に、サービスを再起動します。
サービスの新しい PID を確認するには、以下のサービス構成ツール (Sc.exe) コマンドを発行します。ここで、ServiceName はサービスの名前です。
sc queryex ServiceName
次に、このサービス アプリケーションをターゲットとして WinDbg または CDB を起動します。 これを行うには、3 つの方法があります。-p オプションで PID を指定するか、-pn オプションで実行可能ファイル名を指定するか (実行可能ファイル名が一意の場合)、または -psn オプションでサービス名を指定します。
たとえば、プロセス SpoolSv.exeの PID が 651 で、Spooler という名前のサービスが含まれている場合、次の 3 つのコマンドは同等です。
windbg -p 651 [AdditionalOptions]
windbg -pn spoolsv.exe [AdditionalOptions]
windbg -psn spooler [AdditionalOptions]
デバッガーが起動したら、他のユーザー モード デバッグ セッションと同様に続行します。