天天看點

windbg調試服務程式

    相比通過輸出日志來跟蹤程式運作狀态,我更傾向使用調試器。雖然我早知調試服務很麻煩,總不會比調試驅動還麻煩吧?基于這個想法,我嘗試了在win7上使用windbg調試服務并記錄于此。

    windows上服務程式可分為兩部分:服務安裝程式和背景服務程式本身。服務安裝程式路數比較固定,幾乎不會出錯,是以本文僅記錄了調試背景服務程式的過程。我在服務管理器中建立了一個顯示名為test的服務,ImagePath為:C:\Users\Administrator\Desktop\svr\Debug\srv.exe。

1.設定srv.exe,使其啟動時自動啟動windbg,這麼設定的原因是為了友善調試服務的入口函數ServiceMain。用管理者權限開啟windbg目錄下的gflags.exe,在"Image File"标簽頁中填寫Image名字(不用寫全路徑,當exe啟動時,加載器會搜尋系統資料庫HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\currentversion\image file execution options下的項,如果有同名項,就為其加載Debugee)和調試器的路徑。

windbg調試服務程式

2.設定test服務的屬性,允許服務以互動式啟動。

windbg調試服務程式

(一般情況下,這樣設定就可以在服務管理器中右鍵啟動服務。但是有些機器可能會失敗,這可能是系統資料庫路徑:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows\NoInteractiveServices被置1----禁止服務互動)

3.設定結束後,即可在服務管理器中右鍵啟動服務。啟動時,Win7會彈出"Interactive Services Detection"對話框,選"View the message"即可以windbg調試的方式啟動服務。

windbg調試服務程式

繼續閱讀