下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PowerBuilder高級(jí)調(diào)試技術(shù)與技巧
摘要介紹PowerBuilder編程工具的高級(jí)調(diào)試技術(shù),包括臨時(shí)斷點(diǎn)和條件斷點(diǎn)設(shè)置、變量值改變斷點(diǎn)設(shè)置、Just-in-time調(diào)試、中間層JaguarCTS組件的遠(yuǎn)程調(diào)試等關(guān)鍵技術(shù)關(guān)鍵詞斷點(diǎn);本地調(diào)試;遠(yuǎn)程調(diào)試;Jaguar組件1引言PowerBuilder是數(shù)據(jù)庫(kù)前端應(yīng)用開發(fā)的主流編程工具,隨著從Client/Server的兩層開發(fā)模式到三層甚至多層開發(fā)模式的過渡,PowerBuilder不斷增加新的功能以適應(yīng)和推進(jìn)這種轉(zhuǎn)變。PowerBuilder7的版本已經(jīng)可以通過開發(fā)Jaguar中間層組件創(chuàng)建典型的分布式應(yīng)用。這就給PowerBuilder的調(diào)試技術(shù)提出新的要求。
調(diào)試技術(shù)在任何軟件開發(fā)中都站有及其重要的位置。利用PowerBuilder開發(fā)也不例外。PowerBuilder工具集成了強(qiáng)大的調(diào)試畫板,使得調(diào)試變得容易,但其中的一些高級(jí)的調(diào)試技巧和技術(shù)并不是很容易掌握,而掌握和使用這些調(diào)試的高級(jí)技巧和技術(shù)是開發(fā)高質(zhì)量軟件產(chǎn)品的重要保證,也是優(yōu)秀的PowerBuilder開發(fā)者必須具備的能力。
PowerBuilder提供的高級(jí)調(diào)試技術(shù)主要包括:設(shè)置臨時(shí)和條件斷點(diǎn)、設(shè)置變量值改變斷點(diǎn)、Just-in-time調(diào)試、Jaguar組件遠(yuǎn)程調(diào)試術(shù)(RemoteDebug)。前三種調(diào)試技巧適合于本地調(diào)試;最后一種是分布式應(yīng)用中的調(diào)試技巧,可以在客戶端對(duì)部署在應(yīng)用服務(wù)端JaguarCTS(ComponentTransactionServer組件事務(wù)服務(wù)器簡(jiǎn)稱)的組件進(jìn)行調(diào)試,包括調(diào)試陷入到事件或者方法的腳本,觀察和更改組件變量等。遠(yuǎn)程調(diào)試技術(shù)以本地調(diào)試為基礎(chǔ),是PowerBuilder做分布式開發(fā)的關(guān)鍵性技術(shù),盡管與本地調(diào)試類同,但卻又有其獨(dú)特和復(fù)雜的一面,是做好PowerBuilder中間層組件開發(fā)的重要技術(shù)。當(dāng)然,熟悉本地調(diào)試的各種技術(shù)細(xì)節(jié),才能更好得進(jìn)行遠(yuǎn)程調(diào)試。對(duì)于基本的調(diào)試技術(shù)(比如設(shè)置斷點(diǎn)、單步執(zhí)行、屏蔽和清楚斷點(diǎn)、監(jiān)視變量等)不再累述。2PowerBuilder7的調(diào)試畫板簡(jiǎn)介調(diào)試畫板集成了PowerBuilder強(qiáng)大的調(diào)試功能,包括以下主要的部分:1)BreakpointsView:展示所有要調(diào)試的對(duì)象、事件、代碼行信息、通過它很容易定位到需要調(diào)試的代碼或者進(jìn)行斷點(diǎn)使能和屏蔽等操作。2)CallstacksView:展示調(diào)試的斷點(diǎn)在程序中調(diào)用的層次,返回時(shí)會(huì)按照這個(gè)壓棧順序返回。提供了程序執(zhí)行的宏觀線索。3)Instances:展示實(shí)例化的遠(yuǎn)程組件狀態(tài)等信息。只適用于遠(yuǎn)程調(diào)試。4)ObjectsInMemory:展示加載到內(nèi)存的對(duì)象列表。通過它可以觀察對(duì)象在內(nèi)存里的占用情況(不適用于遠(yuǎn)程調(diào)試)。5)SourceView:展示代碼。6)SourceBrowser:展示應(yīng)用中所有的對(duì)象列表。7)SourceHistory:展示在SourceView中曾經(jīng)出現(xiàn)過的代碼列表。8)VariablesView::展示所有類型的變量??梢栽谡{(diào)試畫板中人為修改變量值,或者設(shè)置在某個(gè)變量的值發(fā)生改變時(shí)中斷程序而觸發(fā)調(diào)試。9)WatchView:展示選擇出來(lái)的變量值,進(jìn)行表達(dá)式的運(yùn)算等。3
本地調(diào)試3.1設(shè)置臨時(shí)和條件斷點(diǎn)對(duì)于一般的斷點(diǎn),可在SourceView中很容易得設(shè)置。如果斷點(diǎn)處在循環(huán)體中,可能不期望每次循環(huán)都跳到調(diào)試畫板,這時(shí)候需要設(shè)置臨時(shí)和條件斷點(diǎn)。斷點(diǎn)在多少次循環(huán)后被觸發(fā),屬于臨時(shí)觸發(fā);斷點(diǎn)在滿足某種表達(dá)式條件后被觸發(fā),屬于條件觸發(fā);在相同的斷點(diǎn)位置可以同時(shí)存在臨時(shí)和條件兩種觸發(fā)機(jī)制。打開對(duì)應(yīng)的斷點(diǎn)編輯彈出窗口(在BreakpointView和SourceView中都能打開),在Occurrence欄目填入一個(gè)整數(shù),代表每循環(huán)多少次才觸發(fā)這個(gè)斷點(diǎn);在Condition欄目填入一個(gè)表達(dá)式,比如ll_i=10,這樣,在這個(gè)循環(huán)中,每次在變量ll_i=10這個(gè)條件滿足時(shí)才觸發(fā)斷點(diǎn)??赏瑫r(shí)設(shè)置臨時(shí)和條件觸發(fā),這種情況下必須兩者都滿足才觸發(fā)斷點(diǎn)。當(dāng)然條件觸發(fā)也可以用于不屬于循環(huán)性質(zhì)的代碼段里面。3.2設(shè)置變量值改變斷點(diǎn)如果調(diào)試特別關(guān)心某個(gè)變量,關(guān)心這個(gè)變量的值在哪里改變了(比如由false變成true,由0變成非0等),這時(shí)可以設(shè)置變量值改變觸發(fā)斷點(diǎn)。方法是在Variables中選擇要調(diào)試的變量,右鍵彈出菜單,選擇BreakonChange,這樣,每次這個(gè)變量的值發(fā)生改變,就會(huì)觸發(fā)斷點(diǎn),能夠方便觀察哪些代碼對(duì)這個(gè)變量進(jìn)行了賦值操作,有利于對(duì)這個(gè)變量的變化軌跡進(jìn)行跟蹤。3.3Just-in-time調(diào)試當(dāng)按正常模式而不是調(diào)試模式運(yùn)行應(yīng)用的時(shí)候,如果程序運(yùn)行不正常,甚至報(bào)錯(cuò),可能需要退出程序,重新打開調(diào)試畫板,調(diào)試這個(gè)異?;蛘咤e(cuò)誤,比較麻煩;選擇just-in-time模式,就能在遇到需要調(diào)試的時(shí)候,即時(shí)切換到調(diào)試模式。選擇菜單Windows>SystemOptions…在彈出窗口中選中JustInTimeDebugging。在按正常模式運(yùn)行程序時(shí),只要切換到PowerBuilder窗口,就提示是否中斷和調(diào)試程序,選擇調(diào)試,會(huì)進(jìn)入調(diào)試模式;如果出現(xiàn)系統(tǒng)錯(cuò)誤,調(diào)試畫板會(huì)自動(dòng)彈出,讓開發(fā)者進(jìn)行調(diào)試,而不必特意選擇調(diào)試模式。4遠(yuǎn)程調(diào)試4.1遠(yuǎn)程調(diào)試的條件和準(zhǔn)備討論了本地調(diào)試的一些技術(shù)和技巧后,轉(zhuǎn)入遠(yuǎn)程調(diào)試方面。在遠(yuǎn)程調(diào)試中可以充分利用以上技術(shù)技巧。要進(jìn)行遠(yuǎn)程調(diào)試首先要滿足幾個(gè)條件:被調(diào)試的組件是PowerBuilder部署的nvo(非可視化)類型,RemoteDebug(遠(yuǎn)程調(diào)試)選項(xiàng)是打開的;前者說(shuō)明這種調(diào)試只局限于PB組件開發(fā)范疇,而不是其他類型的Jaguar組件,后者的滿足要進(jìn)入部署組件的工程對(duì)象畫板,打開屬性窗口,在components頁(yè)框里看Supportsremotedebugging選項(xiàng)是否打開,沒有的話就打開它。以上的條件滿足之后,在組件腳本里面設(shè)置好斷點(diǎn)。打開調(diào)試畫板,在PainterBar工具欄按StartRemoteDebugging按鈕,而不是通常調(diào)試本地應(yīng)用的Start按鈕,然后填寫連接JaguarCTS組件服務(wù)器的信息,選中要調(diào)試的組件。這時(shí)候可等待客戶端的程序調(diào)用該組件了。對(duì)于斷點(diǎn)的設(shè)置,最好先打開組件對(duì)象,在需要調(diào)試的地方設(shè)置上斷點(diǎn),再進(jìn)入調(diào)試畫板,這樣所設(shè)置的斷點(diǎn)已經(jīng)存在了,而不必再在SourceBrowser里面去找。4.2遠(yuǎn)程調(diào)試具體方法運(yùn)行一個(gè)客戶端程序,這個(gè)程序在另一個(gè)PowerBuilder中運(yùn)行、或者是一個(gè)別的機(jī)器上的可執(zhí)行程序,但都必須訪問所調(diào)試JaguarCTS組件的方法和事件,這樣才能觸發(fā)剛才的遠(yuǎn)程調(diào)試,當(dāng)客戶端程序調(diào)用JaguarCTS的組件,并且運(yùn)行到斷點(diǎn)處(陷入到組件里面),剛才調(diào)試組件的PowerBuilder會(huì)在Windows任務(wù)欄中閃爍,提示用戶可進(jìn)行組件的遠(yuǎn)程調(diào)試了,切換到遠(yuǎn)程調(diào)試窗口,就能看到腳本和斷點(diǎn),調(diào)試方法與本地腳本調(diào)試基本相同,這時(shí)候需要充分利用前面所討論的調(diào)試技術(shù)。打開菜單View>Instances,對(duì)于InstancesView,建議在遠(yuǎn)程調(diào)試階段始終打開,這樣能方便的切換對(duì)不同實(shí)例的調(diào)試,在InstancesView里能觀察中間層組件實(shí)例的三個(gè)狀態(tài):running代表這個(gè)組件實(shí)例在運(yùn)行;,idle代表實(shí)例是空閑的,它的存在只是等待客戶對(duì)它的方法的陷入;stopped代表運(yùn)行中止?fàn)顟B(tài)。三個(gè)狀態(tài)中一般是看不到running狀態(tài)的,因?yàn)楫?dāng)觸發(fā)調(diào)試的時(shí)候,實(shí)例是停在斷點(diǎn)處,看到的狀態(tài)是stopped,當(dāng)調(diào)用完方法(組件方法陷入完成后),實(shí)例狀態(tài)轉(zhuǎn)為idle,running狀態(tài)由于陷入代碼運(yùn)行時(shí)間非???,你無(wú)法觀察到,除非你設(shè)定了某種循環(huán)讓組件方法運(yùn)行時(shí)間延長(zhǎng)才能觀察到如果有兩個(gè)以上的客戶端陷入到相同的組件中,會(huì)出現(xiàn)兩個(gè)實(shí)例,它們對(duì)應(yīng)相同的包和組件信息,但標(biāo)號(hào)不同,由實(shí)例號(hào)1、2…標(biāo)識(shí)出,而且它們的狀態(tài)可能不同,有的是stopped,有的可能是idle。選擇不同的instance,可以分別調(diào)試,盡管不同的實(shí)例可能對(duì)應(yīng)相同的組件。5結(jié)束語(yǔ)
建議調(diào)試的時(shí)候把源碼中的窗口置頂函數(shù)注釋掉,如setposition(topmost!)之類的函數(shù),否則會(huì)切換不到調(diào)試畫板。遠(yuǎn)程調(diào)試比本地調(diào)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物標(biāo)志物在胃黏膜愈合評(píng)價(jià)中的應(yīng)用
- 生物墨水的細(xì)胞粘附性調(diào)控策略
- 生物制品穩(wěn)定性試驗(yàn)高通量篩選技術(shù)
- 生活質(zhì)量評(píng)價(jià)在慢性病藥物安全性信號(hào)監(jiān)測(cè)中的應(yīng)用
- 生活質(zhì)量終點(diǎn)在慢性病藥物孤兒藥研發(fā)中的特殊意義
- 深度解析(2026)《GBT 19963.2-2024風(fēng)電場(chǎng)接入電力系統(tǒng)技術(shù)規(guī)定 第2部分:海上風(fēng)電》(2026年)深度解析
- 深度解析(2026)《GBT 19499-2004表面化學(xué)分析 數(shù)據(jù)傳輸格式》
- 深度解析(2026)《GBT 19448.5-2004圓柱柄刀夾 第5部分裝一個(gè)以上矩形車刀的D型刀夾》
- 生化分析儀精度的方法學(xué)比對(duì)驗(yàn)證
- 網(wǎng)絡(luò)隱私保護(hù)中的加密技術(shù)及面試題
- 熱力供應(yīng)監(jiān)控計(jì)劃可行性研究報(bào)告
- 《病區(qū)醫(yī)院感染管理規(guī)范》試題及答案
- 烷基化裝置操作工安全培訓(xùn)模擬考核試卷含答案
- 全國(guó)碩士研究生2024年-管理類綜合能力真題(管理類聯(lián)考)
- 長(zhǎng)津湖課件教學(xué)課件
- 聚焦前沿:2025年職業(yè)教育產(chǎn)教融合共同體建設(shè)難題與對(duì)策研究
- 2025年廣西國(guó)家工作人員學(xué)法用法考試試題及答案
- (2025秋新版)蘇教版科學(xué)三年級(jí)上冊(cè)全冊(cè)教案
- 農(nóng)商行法律培訓(xùn)課件
- 部編版小學(xué)二年級(jí)語(yǔ)文上冊(cè)教學(xué)反思集體備課計(jì)劃
- 執(zhí)法用手機(jī)管理辦法
評(píng)論
0/150
提交評(píng)論