[英]Unable to debug Windows Service
我正在調查幾篇文章,以找到如何調試Windows服務。 我發現,如果將以下代碼放入OnStart()
函數中:
Debugger.Launch();
可以解決問題,但是當我通過CMD(NET START)啟動Windows服務后,它就可以正常啟動並運行,但是即使通過加載的Windows服務打開了VS,調試器也無法啟動。
我覺得我想念什么,那是什么?
您可以嘗試將其包含在OnStart
方法中:
while(!System.Diagnostics.Debugger.IsAttached)
{
System.Threading.Thread.Sleep(100);
}
然后,從Visual Studio菜單手動附加到流程: 調試->附加到流程 。
另外,請注意,在Debugger.Launch方法主題的“ 備注”部分中指出:
如果已經連接了調試器,則不會發生任何事情。
我通過修改服務的Main方法來做到這一點,它在Program.cs中,默認情況下看起來像這樣:
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[] { new ServiceMain() };
ServiceBase.Run(ServicesToRun);
然后,您可以使用Environment.UserInteractive來確定您的服務是像服務或低谷調試器那樣啟動的:
if (!Environment.UserInteractive)
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[] { new ServiceMain() };
ServiceBase.Run(ServicesToRun);
}
else
{
ServiceMain sm = new ServiceMain();
Console.Write("Service debug run");
sm.StartForDebugging();
}
當然,您將必須在服務中添加StartForDebugging方法,並且實際上與在OnStart方法中所做的一樣,或者可以直接調用OnStart方法以使其公開。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.