选择调试服务应用程序的最佳方法

可通过多种不同的方法来调试服务应用程序。 若要选择正确的方法,必须首先做出两个选项:调试器附加到服务应用程序的时间以及要使用的调试配置。

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

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

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

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

可以选择三种调试配置:

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

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

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

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

换句话说,除非计划在服务运行后手动附加调试器,否则不能使用本地调试。 此限制导致在这些版本的 Windows 中,服务在会话 0 中运行,并且自动启动并附加到服务的任何调试器也位于会话 0 中,并且该服务在运行的计算机上没有用户界面。