手动调试服务应用程序

启动服务应用程序后手动附加到服务应用程序与调试任何正在运行的用户模式进程非常类似。

使用带 /s 选项的TList 工具可显示每个正在运行的进程 (PID) 以及每个进程中处于活动状态的服务的进程 ID。

如果要调试的服务应用程序与单个进程中的其他服务组合在一起,则必须在调试之前将其隔离。 为此,请执行隔离服务中所述的过程。 在此过程结束时,重启服务。

若要确定服务的新 PID,请发出以下服务配置工具 (Sc.exe) 命令,其中 ServiceName 是服务的名称:

sc queryex ServiceName 

现在,使用此服务应用程序作为目标启动 WinDbg 或 CDB。 有三种方法可以做到这一点:使用 -p 选项指定 PID、使用 -pn 选项指定可执行文件名称(如果可执行文件名称) 是唯一的 (),或者使用 -psn 选项指定服务名称。

例如,如果进程SpoolSv.exe的 PID 为 651,并且包含名为 Spooler 的服务,则以下三个命令等效:

windbg -p 651 [AdditionalOptions] 
windbg -pn spoolsv.exe [AdditionalOptions] 
windbg -psn spooler [AdditionalOptions] 

调试器启动后,像在任何其他用户模式调试会话中一样继续。