Windows Service 遠端偵錯方式

通常在本機開發的時後都是沒有問題的,會發生問題都是佈署到正式環境後才會發生=”=
而用一般遠端偵錯的方式,都是已經啟動服務成功才能下中斷點
如果問題出在啟動失敗的話,就中斷不到
這種情境可以加入System.Diagnostics.Debugger.Launch();
讓應用程式等待偵錯工具的連入後才會繼續執行下去

using System.ServiceProcess;

namespace MyService
{
public partial class Service1 : ServiceBase
{
private NowTimeReporter reporter = new NowTimeReporter();

public Service1()
{
InitializeComponent();

// 偵錯中斷用
System.Diagnostics.Debugger.Launch();
}

protected override void OnStart(string[] args)
{
this.reporter.Start();
}

protected override void OnStop()
{
this.reporter.Stop();
}
}
}

執行start.bat來啟動服務
net start Service1

就會跳出選擇偵錯工具的畫面,這裡先不選擇

回到本機,選擇工具->附加執行緒,選擇遠端和輸入IP,再選擇執行檔,然後附加就行了

到Server中上放開偵錯工具選擇畫面

就會停在System.Diagnostics.Debugger.Launch();這一行


在本機也可以用這種偵錯方式,就不用到應用程式進入點去動手腳
只要讓服務啟動,再選擇偵錯工具連入就行了