對服務進行偵錯

您可以使用下列任一方法來偵錯服務。

  • 在執行服務時,請使用您的偵錯工具進行偵錯。 首先,取得服務進程 (PID) 的進程識別碼。 取得 PID 之後,請附加至執行中的進程。 如需語法資訊,請參閱偵錯工具隨附的檔。

  • 呼叫 DebugBreak 函式,以叫用 Just-In-Time 偵錯的偵錯工具。

  • 指定啟動程式時要使用的偵錯工具。 若要這樣做,請在下列登錄位置中建立名為 Image File Execution Options 的機碼:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

    例如,使用與服務相同的名稱建立子機碼 (,例如MYSERV.EXE) 。 在此子機碼中,新增名為DebuggerREG_SZ類型的值。 使用偵錯工具的完整路徑作為字串值。 在 [服務] 控制台小程式中,選取您的服務,按一下 [ 啟動 ],然後核取 [ 允許服務與桌面互動]。 服務必須是互動式服務,否則偵錯工具無法在預設桌面上執行。 請注意,由於所有服務都是在專門保留給服務的會話中執行,且不支援顯示使用者介面,所以不再支援從 Windows Vista 起支援這項技術。

  • 使用 事件追蹤 來記錄資訊。

若要偵錯自動啟動服務的初始化程式碼,您必須暫時安裝並執行服務作為需求啟動服務。

有時候,可能需要以主控台應用程式的形式執行服務,以進行偵錯。 在此案例中, StartServiceCtrlDispatcher 函式會 傳回ERROR_FAILED_SERVICE_CONTROLLER_CONNECT。 因此,請務必建構程式碼,讓傳回此錯誤時不會呼叫服務特定的程式碼。

偵錯服務應用程式

Windows 的偵錯工具