如何:調試 Windows 服務應用程式

來源:互聯網
上載者:User

FROM:http://msdn.microsoft.com/zh-cn/library/7a50syb3(VS.80).aspx

   由於服務必須從服務控制管理員的上下文中運行,而不是從 Visual Studio 中運行,因此調試服務不像調試其他 Visual Studio 應用程式類型那樣簡單。若要調試服務,必須首先啟動服務,然後將一個調試器附加到正在運行服務的進程中。然後可以使用 Visual Studio 的所有標準調試功能來調試應用程式。

警告

除非知道進程是什麼,並且知道附加到進程或可能取消進程所帶來的後果,否則不要附加到進程。例如,如果附加到 WinLogon 進程,然後停止調試,系統就會暫停,因為沒有 WinLogon,系統無法運行。

只能將調試器附加到正在啟動並執行服務。附加進程會中斷服務的當前運行;它並不真正終止或暫停服務的處理。也就是說,如果開始調試時服務正在運行,則在進行調試時,該服務從技術上說仍處於“已啟動”狀態,但它的處理已掛起。

附加到服務的進程使您能夠調試大多數服務代碼,但並非全部;例如,由於服務已經啟動,因此不能用這種方法調試服務的 OnStart 方法中的代碼,或調試用於載入服務的 Main 方法中的代碼。解決此問題的一個方法是:在唯一作用是協助調試的服務應用程式中建立一個臨時服務。可以將兩個服務都安裝上,然後啟動此“虛擬”服務載入服務進程。臨時服務啟動了進程後,就可以使用 Visual Studio 中的“調試”菜單來附加到服務進程。

當附加該進程之後,可以設定斷點並使用這些斷點來調試代碼。當退出用於附加到該進程的對話方塊時,實際上已處於偵錯模式。您可以使用“服務控制管理員”開始、停止、暫停和繼續您的服務,因此命中已設定的斷點。調試成功後,移除此“虛擬”服務。

注意

調試 OnStart 方法可能比較困難,因為 Windows 服務管理員將所有嘗試啟動服務的時間限制在 30 秒內。有關更多資訊,請參見疑難解答:調試 Windows 服務 。

調試服務

安裝您的服務。有關更多資訊,請參見如何:安裝和卸載服務 。

可從“服務控制管理員”、“伺服器總管”或代碼啟動服務。有關更多資訊,請參見如何:啟動服務 。

在 Visual Studio 中,從“調試”菜單中選擇“進程”。

即會出現“進程”對話方塊。

單擊“顯示系統進程”。

在“可用進程”地區內單擊服務的進程,然後單擊“附加”。

提示

該進程將與服務的可執行檔同名。

出現“附加到進程”對話方塊。

選擇任意適當的選項,然後單擊“確定”關閉對話方塊。

注意

現在您處於偵錯模式。

設定要在代碼中使用的任意斷點。

訪問“服務控制管理員”並操縱您的服務,並發送停止、暫停和繼續命令以命中您的斷點。有關運行“服務控制管理員”的更多資訊,請參見如何:啟動服務 。 請參見 任務

如何:安裝和卸載服務
如何:啟動服務 概念

Windows 服務應用程式介紹

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.