問題
使用 attach Debug小技巧
解決方法
WindowsService應用程式大多配合timer去執行某功能,
例如:每分鐘連到某位置看網頁是否繼續服務等...
但若是遇到開發時期要除錯怎麼辦?
尤其連TIMER有沒有在動的訊息都無法顯示出來的時候?
像這些時候通常都會寫log檔去記錄狀況
但是如果WindowsService不寫log了,但也沒有錯誤訊息,而cpu卻一樣在執行的時候
挖哩~誰知道程式哪裡有問題阿??
所以這時候就會用attached的方式去trace程式,
但麻煩的事是通常WindowsService程式一啟動的時候計數器就開始跑,
若程式無回應發生很早的時候,就算attached到以後,
會發現根本無法找到問題!!
在此提供一個方式,如下:
在WindowsService啟動後的程式加入int x=0;
while(x!=99){}
以上是用C#寫的,然後當attach進入後,會看到程式一直在while裡跑迴圈,這時再使用"監看式"(watch)去變更x=99,就可以套出此迴圈了!!
目的是用來造成無限迴圈,也就是讓程式困在裡面
之後attach進到WindowsService以後,就在迴圈裡面設中斷點
然後當程式停在中斷點的時候,再把它拉出迴圈來繼續跑
這樣就可以解決無法attach的問題了!!
沒有留言:
張貼留言