【转】Windows服务调试技巧
關(guān)于調(diào)試windows service, 其實這是一個老生常談的問題了.
通常的處理辦法是, 在service運行后, 在調(diào)試器中選擇attach to process.
然而這種做法也有一定的局限性, 例如在service啟動時的OnStart事件中的代碼, 基本上很難調(diào)試. 往往當(dāng)attach到我們的service的時候, 這部分代碼已經(jīng)執(zhí)行過了. 于是, 有人提出, 可以另寫一個project來調(diào)用這個OnStart方法, 或?qū)?/span>OnStart方法中的代碼搬到另一個project中測試. 不過, 這些方法終究不是以windows服務(wù)的方式調(diào)試的, 不能夠最真實的反應(yīng)service運行時的執(zhí)行狀況(如權(quán)限問題等環(huán)境問題).
我的做法是, 在OnStart方法的最開始部分加上"Debugger.Launch()"的調(diào)用, 當(dāng)service運行到此處時, 將會彈出一個選擇調(diào)試器的對話框, 同時暫停在當(dāng)前位置. 這樣, 我們就做到了在代碼中手動的啟動調(diào)試器.
示例代碼如下:
1 public partial class MyService : ServiceBase
2 {
3 public MyService()
4 {
5 InitializeComponent();
6 }
7 protected override void OnStart(string[] args)
8 {
9 #if DEBUG
10 Debugger.Launch(); //Launches and attaches a debugger to the process.
11 ? #endif
12 // TODO: add your initialize code here.
13 ? }
14 protected override void OnStop()
15 {
16 }
17 }
轉(zhuǎn)載于:https://www.cnblogs.com/fast-michael/archive/2011/05/26/2057949.html
總結(jié)
以上是生活随笔為你收集整理的【转】Windows服务调试技巧的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 接视频Java 数据库
- 下一篇: 数据挖掘-电影推荐系统