2009-10-13 50 views
5

我在Windows服務中使用Microsoft Log Parser。該程序工作在一個普通的網頁,但是當我把代碼放入Windows服務中時,它不起作用。我在Windows服務中放入了Breakponts,但是當我運行代碼時,程序不會停在斷點處。因此,通過我的故障排除,我將問題縮小到Log Parser軟件和Linq。所以無論是Linq還是日誌解析器軟件都會造成這個問題。你們有什麼想法嗎?什麼是在Visual Studio 2008中調試Windows服務程序的最佳方法

回答

2

根據程序的運行方式,我在過去做了很多這樣的事情。我認爲最簡單的方法是在Debugger.Launch()周圍配置一個if #DEBUG預處理器指令,這樣當您構建項目時,Debugger.Launch()調用將不會被編譯到程序集中。

我們完成此任務的一種方法是使用System.Windows.Forms.MessageBox.Show(「attach」),它允許我們在顯示「attach」對話框時手動連接到調試器。

我不喜歡的最後一種方法是根據傳入的命令行參數更改服務的行爲。基本上選擇不使用ServiceBase.Run啓動服務,只要特定參數被觸發,但調用類它封裝了服務的行爲/主要功能。

+1

重申最後一點 - 我相信你也可以檢查'Environment.UserInteractive'。 –

2

你想調試OnStart方法嗎?如果是這樣,您可以使用System.Diagnostics.Debugger.Launch()System.Diagnostics.Debugger.Break()方法在on start方法運行時獲得附加調試器的機會,否則,您總是會遲到並附加調試器。

2

我認爲胖貓建議將調試器附加到服務過程聽起來是對的。如果仍然不起作用,請嘗試使用Debug.WriteLineDebugView

相關問題