调试服务

可以使用以下任一方法调试服务。

  • 在服务运行时使用调试器调试服务。 首先, (服务进程的 PID) 获取进程标识符。 获取 PID 后,附加到正在运行的进程。 有关语法信息,请参阅调试器附带的文档。

  • 调用 DebugBreak 函数以调用调试器进行实时调试。

  • 指定启动程序时要使用的调试器。 为此,请在以下注册表位置创建名为 “映像文件执行选项” 的项:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

    创建与服务同名的子项 (例如MYSERV.EXE) 。 在此子项中,添加名为 Debugger 的 REG_SZ 类型的值。 使用调试器的完整路径作为字符串值。 在“服务”控制面板小程序中,选择服务,单击“启动”,检查“允许服务与桌面交互”。 该服务必须是交互式服务,否则调试器无法在默认桌面上运行。 请注意,从 Windows Vista 开始,此方法不再受支持,因为所有服务都在专用于服务的会话中运行,不支持显示用户界面。

  • 使用 事件跟踪 来记录信息。

若要调试自动启动服务的初始化代码,必须临时安装该服务并将其作为按需启动服务运行。

有时,出于调试目的,可能需要将服务作为控制台应用程序运行。 在此方案中, StartServiceCtrlDispatcher 函数将返回 ERROR_FAILED_SERVICE_CONTROLLER_CONNECT。 因此,请确保构建代码,以便返回此错误时不会调用特定于服务的代码。

调试服务应用程序

Windows 调试工具