簡體   English   中英

Windows服務:調試失敗

[英]windows service: failed to debug

我按照官方msdn中的說明調試Windows服務: http : //msdn.microsoft.com/en-us/library/7a50syb3.aspx但是,在將進程附加到調試器並嘗試停止Service中的服務后控制管理中心,該過程剛剛消失,調試器因此退出,而沒有遇到任何斷點。 我選擇了進程名稱作為窗口服務應用程序的可執行文件。 我做錯了嗎?

將調試器附加到進程后,單擊藍色的“停止”按鈕通常會終止進程,這就是為什么看到服務進程消失的原因。 當然,此時不會斷點,因為該進程的所有模塊都已卸載。 如果要從服務分離並仍然讓其運行,請在Visual Studio的“ 調試”菜單中單擊“ 全部分離”

感覺好像在調試服務時遇到問題。 調試Windows服務與在Visual Studio中調試其他項目有些不同。 僅單擊綠色的“播放”按鈕並不會自動將服務置於調試模式。 在許多情況下,需要在OnStart()方法中設置斷點,因為這是問題所在。 我總是調試Windows服務的方式是,在程序嘗試執行任何其他操作之前,將Thread.Sleep()語句放在OnStart()方法的頂部。 您可以指定希望主線程進入睡眠狀態的時間,然后使用這段時間將VS調試器附加到Windows服務。 例如:

 protected override void OnStart(string[] args)
 {
     Thread.Sleep(10000);

     // Rest of the code
 }

將給您10秒鍾的時間附加到該服務。 安裝服務,在“ Services窗口中開始,然后將其附加。

您可以嘗試將其添加到服務的頂部嗎?

System.Diagnostics.Debugger.Launch();

或者,如有可能,將您的服務轉換為使用http://topshelf-project.com/ 支持在Visual Studio中進行調試。 並且具有允許服務“作為控制台應用程序運行”進行調試的附加好處。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM