共用方式為


自動偵錯服務應用程式

當服務應用程式啟動時,可以自動啟動偵錯工具。 或者,當服務應用程式遇到例外狀況或執行 DebugBreak 命令時,也可以自動啟動它。 如果您已選擇其中一種方法,本主題將說明如何繼續進行。 如果您不確定要選擇哪一種方法,請參閱 選擇最佳方法

然後使用下列程序:

  1. 執行下列其中一個準備步驟:

    • 如果您打算從頭開始對服務應用程式進行偵錯,包括其初始化程式碼,請遵循 啟用初始化程式碼偵錯中所述的程式。 或者,如果您想要當服務應用程式當機或遇到例外狀況時中斷偵錯工具,請遵循 啟用服務應用程式以中斷偵錯工具中所述的程式。
    • 若要確保服務應用程式允許偵錯工具正常執行,請執行 調整服務應用程式逾時中所述的程式。
    • 如果服務與其他服務結合在單一 SvcHost 程式中,請執行隔離服務中所述的程式。
  2. 如果服務已在執行中,您必須重新開機它,這些變更才會生效。 我們建議您重新開機 Windows 本身,以移除執行中服務的任何效果。 如果您不想重新開機 Windows,請使用下列命令,其中 ServiceName 是服務的名稱:

    net stop ServiceName 
    net start ServiceName 
    
  3. 如果您選擇偵錯服務應用程式的初始化程式碼,當服務啟動時,偵錯工具就會啟動並附加至服務應用程式。

    如果您選擇讓偵錯工具由例外狀況觸發,服務應用程式會正常執行,直到遇到例外狀況或執行 DebugBreak 函式為止。 此時會啟動偵錯工具,並附加至服務應用程式。

  4. 下一個步驟取決於您在步驟 1 期間指定的偵錯工具命令列:

    • 如果您未指定任何遠端選項的偵錯工具,則會啟動此偵錯工具,而且其視窗會變成可見。
    • 如果您使用 -server 和 -noio 選項指定 NTSD,則會在沒有主控台視窗的情況下啟動 NTSD。 然後,您可以使用 -remote 參數啟動任何使用者模式偵錯工具,從另一部電腦連線到偵錯會話。 如需指示,請參閱 啟用偵錯用戶端
    • 如果您使用 -d 選項指定 NTSD,則會在沒有主控台視窗的情況下啟動 NTSD。 接著,您可以使用在另一部電腦上執行的核心偵錯工具,連線到偵錯會話。 如需指示,請參閱 從核心偵錯工具控制 User-Mode 偵錯工具
    • 如果您使用 -ddefer 和 -server 選項指定 NTSD,則會在沒有主控台視窗的情況下啟動 NTSD。 然後,您可以使用核心偵錯工具和使用者模式遠端偵錯程式連線到偵錯會話,其執行方式與服務 (不同,但可能與彼此相同的電腦) 。 如需指示,請參閱 結合這個方法與遠端偵錯。
  5. 偵錯工具啟動時,服務會在初始進程中斷點、例外狀況或 DebugBreak 命令暫停。 這可讓您檢查服務應用程式的目前狀態、設定中斷點,以及進行任何其他所需的組態選擇。

  6. 使用 g (Go) 或其他執行命令繼續執行服務應用程式。

另請參閱

DebugBreak 函式