選擇對服務應用程式進行偵錯的最佳方法
有數種不同的方式可以偵錯服務應用程式。 若要選擇正確的方法,您必須先做出兩個選項:調試程式附加至服務應用程式的時間,以及要使用的偵錯組態。
除錯程式可以附加至服務應用程式有三個階段:
服務啟動的最初階段。 調試程式會在服務啟動時自動啟動。 如果您想要偵錯服務的初始化程式代碼,請選擇此選項。
服務第一次遇到例外狀況。 當發生例外狀況或當機時,或服務應用程式呼叫 DebugBreak 函式時,就會自動啟動調試程式。 如果您希望調試程式在遇到問題但未出現之前,請選擇此選項。
在服務正常運行之後。 您可以手動將調試程式附加至隨時正在執行的服務。 如果您不想預先準備偵錯,請選擇此選項。
您可以選擇三種偵錯組態:
本機偵錯。 在與服務相同的計算機上執行的單一調試程式。
遠端偵錯。 在與服務相同的電腦上運行的偵錯伺服器,受到從第二台電腦上運行的偵錯客戶端的控制。
內核控制的使用者模式偵錯。 在與服務相同的計算機上執行的使用者模式偵錯工具,可由第二部計算機上的內核偵錯工具進行控制。
如果您的服務是在 Windows Vista 或更高版本的 Windows 上執行,合併這些選項時會有一項限制。 如果您想要從服務啟動的開頭進行偵錯,或從遇到例外狀況的時間開始,您必須使用遠端偵錯或核心控制的使用者模式偵錯。
換句話說,除非您計劃在執行服務之後手動附加調試程式,否則您無法使用本機偵錯。 這項限制是由於在這些版本的 Windows 中,服務會在會話 0 中執行,且任何自動啟動並附加至服務的調試程式也位於會話 0 中,而且服務執行的計算機沒有使用者介面。