delphi服務程序(service)的調試方法 編程
方法一:ide
1.調試delphi 寫的服務程序,有這麼一個辦法。原來每次都是用attach to process方法,很麻煩。而且按照服務線程的執行線路,可能會停不到想要的斷點。笨辦法是,在procedure TsvcFrm.ServiceExecute(Sender: TService);中想要下斷的語句前加我的定勝天的sleep(20000),但實際上這種辦法是主觀臆測的。可行,沒問題。記得大學時,俺一同窗,也會修電視,他的辦法是弄個小錘子,四處敲擊,沒兩下就行了,和我用萬用表的方法不同,萬用表他根本不會用。並且產生的效益比個人要樂觀。畢業了,他回家開個網吧,也算是作IT,而我成了一位對編程很有研究的IT業餘人士,結果他收入仍是比我高。日,下輩子,老子扛大炮去修勞力士去。回憶回憶過去,展望展望將來,無限感慨。上面的方法是能夠的,如同錘子,仔細瞭解下服務程序的執行過程,你會發現,用下面的方法,就能夠把服務程序當普通程序調試了。
program svcProxy;
uses
SvcMgr,
scvmain in ’scvmain.pas’ {svcFrm: TService};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TsvcFrm, svcFrm);
svcFrm.ServiceExecute(nil);
//Application.Run;
end.
如上修改dpr文件,就能夠直接在serviceexecute過程當中下斷了,what a good idea. OK ,debug delphi services directly.
調試好了,修改回去,就好了,調試delphi服務程序就簡單和多了。不再用去附加到進程這種方法了。
工具
方法二:
測試
第二種測試服務程序的途徑是:安裝並運行服務程序,而後將其附加到Delphi 中的運行進程。按照下列步驟,便可在運行服務時調試ServiceApp.exe 程序。
1. 在命令行運行Serviceapp.exe /INSTALL,安裝服務程序。
2. 選擇Start | Settings | Control Panel | Administrative Tools | Services,將運行Services 小應用程序。找到MyService,而後單擊Start Service 工具欄按鈕(這些步驟適用於Windows 2000;在Windows NT4.0 中的步驟幾乎相同)。
3. 運行Delphi。
4. 裝載ServiceApp.dpr 工程。
5. 在Delphi 中選擇Run | Attach to Process 菜單項。
6. 在Attach to Process 對話框(以下圖所示)中,選中Show System Processes 複選框。
7. 找到ServiceApp.exe,而後單擊Attach 按鈕。
8. 在Delphi 中,對工程源文件的OnExecute 事件方法設置斷點,而後按鍵F9。
圖B.3 Attach to Process 對話框可用於將Delphi 調試器附加到已運行的進程上;這對於調試服務程序是頗有用的
Delphi 將把調試器附加到運行的服務程序上,並打開CPU 對話框。除非您閱讀彙編語言很是流暢,不然CPU 視圖用處不大。但當服務程序運行到斷點時,將中止在斷點上並切換到Delphi 代碼視圖。在用戶經過Delphi 獲取對已運行服務的控制以後,便可像其餘程序同樣對服務進行步進和調試。
注意:做爲開發者,您應該對本身的PC 具備管理員權限。idea
Delphi 幫助文檔提到,若是權限不足,那麼附加到服務進程可能會失敗。當只要對PC 擁有管理員權限,附加到運行的服務進程老是工做正常。幫助主題「Debugging Services」包含了調試服務的第三種途徑,其中涉及到修改註冊表設置,您能夠參考。spa