选择最佳方法

调试服务应用程序有几种不同的方法。 为了选择正确的方法,必须首先做出两个选择:调试器附加到服务应用程序的时间和要使用的调试配置。

调试器可以在三个阶段附加到服务应用程序:

  • 服务启动的最初阶段。 调试器在服务启动时自动启动。 如果要调试服务的初始化代码,请选择此选项。

  • 服务第一次遇到异常时。 当发生异常或崩溃或服务应用程序调用 DebugBreak 函数时,调试器会自动启动。 如果希望调试器在遇到问题时出现,而不是在遇到问题之前出现,请选择此选项。

  • 服务正常运行后。 可以随时手动将调试器附加到已在运行的服务。 如果不想提前为调试做准备,请选择此选项。

可以选择三种调试配置:

  • 本地调试。 单个调试器,与服务在同一台计算机上运行。

  • 远程调试。 与服务在同一台计算机上运行的用户模式调试器,由运行在第二台计算机上的调试客户端控制。

  • 内核控制的用户模式调试。 与服务在同一台计算机上运行的用户模式调试器,由第二台计算机上的内核调试器控制。

如果服务在 Windows 2000、Windows XP 或 Windows Server 2003 上运行,则可以将这三个附加选项中的任何一个与这三个调试配置选项中的任意一个组合使用。

如果服务在 Windows Vista 或更高版本的 Windows 上运行,则对如何组合这些选项有一个限制。 如果要从服务启动之初或遇到异常时开始进行调试,则必须使用远程调试或内核控制的用户模式调试。

换句话说,在Windows Vista及更高版本上,除非计划在服务已经运行后手动附加调试器,否则无法使用本地调试。 此限制是由于以下事实造成的:在这些版本的 Windows 中,服务在会话 0 中运行,并且自动启动并附加到服务的调试器也在会话 0 中,并且在运行服务的计算机上没有用户界面。