調試你的包(DebugYourPackages)

先給你一個驚喜:Borland剛剛發表的DELPHI6已經可以直接調試包了! 

再給你一個提醒:千萬不要以爲DELPHI5就不可以調試包! 

---
    以前,我曾讀到一本講開發DELPHI元件的好書,寫的很精彩,讓我受益頗多。不過其中談到:由於沒有辦法在源程序基礎上調試包中的元件,所以開發元件一定要特別認真仔細的寫好元件的代碼。的確,用DELPHI5單獨打開一個*.DPK文件時,DELPHI的Run(F9)、Step Over(F8)、Track Into(F7)等Debug命令全部無效。自己再想想,DELPHI的IDE又與包文件有着非常密切的關係。在加載了包的IDE運行環境中要調試包本身,似乎有點像邏輯學上的自反悖論。後來,我就一直相信包是不能在源程序基礎上調試的。
    然而,包是可以直接在DELPHI5的IDE環境內調試原代碼的!不但可以調試運行時刻的包(Runtime Package),而且還可以調試設計時刻包(Designtime Package)! 
在一次偶然中,我硬是強行將我的包加入到DELPHI的項目組(Project Group)中。這時,我驚奇地發現運行程序的工具按鈕是有效的。當時,我真不敢相信自己的眼睛!特別是有那本權威書籍在我腦海中形成的根深蒂固的印象。 
隨後的實踐證明,只要包文件處在一個項目組中,就可以象調試DLL項目一樣調試它。只需要在運行參數(Run Paramenters)中設置相應的主應用程序(Host Application),即可開始調試。當然,主應用程序一定要是按包編譯(Build with runtime packages)的。 
爲什麼會這樣呢?
    我想,DELPHI的一個項目文件編譯之後最終都會形成一個可執行模塊,要麼是EXE文件,要麼是DLL文件。其實,包編譯後的BPL文件也是一個DLL文件,一個可執行模塊。因此,DPK文件也相當於是一個項目文件。只是,用DELPHI5打開DPK文件時沒有被當作項目打開。而在項目組中,DELPHI把每一個加入的項都當作項目來激活。要知道,一個典型的應用系統常常是由EXE、DLL和BPL共同組成。因此,包作爲項目加入到項目組中也是合情合理的,DELPHI也因該是這樣處理。
    要調試一個單獨的包,可以這樣操作。首先,關閉DELPHI打開的所有項目,即用File\Close All菜單命令。然後,用View\Project Manager菜單命令打開項目管理器。接着,在項目管理器中按鼠標右鍵,選擇Add Existing Project命令。在彈出的打開文件窗口中,應該選擇打開*.DPK的文件。找到你要調試的包文件之後,即可將包文件加入當前項目組中。這時,DELPHI的Run(F9)、Step Over(F8)、Track Into(F7)等Debug命令都是有效的。最後,只需要設置主應用程序(Host Application),即可開始調試包。
    如果要調試Designtime Package,或者要調試你開發的元件在IDE環境中的錯誤,該怎麼辦呢?很簡單,只需要將Host Application設置爲Delphi32.exe即可。當然Delphi32.exe的具體位置要看你安裝DELPHI的具體目錄,典型的是:C:\Program Files\Borland\Delphi5\Bin\目錄。這樣,你就可隨心所欲地調試包在IDE環境下的行爲了。不過,不要忘記一定要首先將你的包安裝到IDE環境中,否則Delphi32.exe啓動時並不會加載未安裝的包。
    在DELPHI 6中,DPK文件已經完全被當作項目來打開了。DELPHI理當如此處理,雖然太遲,但畢竟還是讓我們高興。遲到的春天陽光似乎更加燦爛...... 

------摘自《悟透DELPHI》並稍加改編。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章