PowerBuilder高級調(diào)試技術(shù)與技巧_第1頁
PowerBuilder高級調(diào)試技術(shù)與技巧_第2頁
PowerBuilder高級調(diào)試技術(shù)與技巧_第3頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

PowerBuilder高級調(diào)試技術(shù)與技巧

摘要介紹PowerBuilder編程工具的高級調(diào)試技術(shù),包括臨時斷點和條件斷點設(shè)置、變量值改變斷點設(shè)置、Just-in-time調(diào)試、中間層JaguarCTS組件的遠程調(diào)試等關(guān)鍵技術(shù)關(guān)鍵詞斷點;本地調(diào)試;遠程調(diào)試;Jaguar組件1引言PowerBuilder是數(shù)據(jù)庫前端應(yīng)用開發(fā)的主流編程工具,隨著從Client/Server的兩層開發(fā)模式到三層甚至多層開發(fā)模式的過渡,PowerBuilder不斷增加新的功能以適應(yīng)和推進這種轉(zhuǎn)變。PowerBuilder7的版本已經(jīng)可以通過開發(fā)Jaguar中間層組件創(chuàng)建典型的分布式應(yīng)用。這就給PowerBuilder的調(diào)試技術(shù)提出新的要求。

調(diào)試技術(shù)在任何軟件開發(fā)中都站有及其重要的位置。利用PowerBuilder開發(fā)也不例外。PowerBuilder工具集成了強大的調(diào)試畫板,使得調(diào)試變得容易,但其中的一些高級的調(diào)試技巧和技術(shù)并不是很容易掌握,而掌握和使用這些調(diào)試的高級技巧和技術(shù)是開發(fā)高質(zhì)量軟件產(chǎn)品的重要保證,也是優(yōu)秀的PowerBuilder開發(fā)者必須具備的能力。

PowerBuilder提供的高級調(diào)試技術(shù)主要包括:設(shè)置臨時和條件斷點、設(shè)置變量值改變斷點、Just-in-time調(diào)試、Jaguar組件遠程調(diào)試術(shù)(RemoteDebug)。前三種調(diào)試技巧適合于本地調(diào)試;最后一種是分布式應(yīng)用中的調(diào)試技巧,可以在客戶端對部署在應(yīng)用服務(wù)端JaguarCTS(ComponentTransactionServer組件事務(wù)服務(wù)器簡稱)的組件進行調(diào)試,包括調(diào)試陷入到事件或者方法的腳本,觀察和更改組件變量等。遠程調(diào)試技術(shù)以本地調(diào)試為基礎(chǔ),是PowerBuilder做分布式開發(fā)的關(guān)鍵性技術(shù),盡管與本地調(diào)試類同,但卻又有其獨特和復(fù)雜的一面,是做好PowerBuilder中間層組件開發(fā)的重要技術(shù)。當(dāng)然,熟悉本地調(diào)試的各種技術(shù)細節(jié),才能更好得進行遠程調(diào)試。對于基本的調(diào)試技術(shù)(比如設(shè)置斷點、單步執(zhí)行、屏蔽和清楚斷點、監(jiān)視變量等)不再累述。2PowerBuilder7的調(diào)試畫板簡介調(diào)試畫板集成了PowerBuilder強大的調(diào)試功能,包括以下主要的部分:1)BreakpointsView:展示所有要調(diào)試的對象、事件、代碼行信息、通過它很容易定位到需要調(diào)試的代碼或者進行斷點使能和屏蔽等操作。2)CallstacksView:展示調(diào)試的斷點在程序中調(diào)用的層次,返回時會按照這個壓棧順序返回。提供了程序執(zhí)行的宏觀線索。3)Instances:展示實例化的遠程組件狀態(tài)等信息。只適用于遠程調(diào)試。4)ObjectsInMemory:展示加載到內(nèi)存的對象列表。通過它可以觀察對象在內(nèi)存里的占用情況(不適用于遠程調(diào)試)。5)SourceView:展示代碼。6)SourceBrowser:展示應(yīng)用中所有的對象列表。7)SourceHistory:展示在SourceView中曾經(jīng)出現(xiàn)過的代碼列表。8)VariablesView::展示所有類型的變量。可以在調(diào)試畫板中人為修改變量值,或者設(shè)置在某個變量的值發(fā)生改變時中斷程序而觸發(fā)調(diào)試。9)WatchView:展示選擇出來的變量值,進行表達式的運算等。3

本地調(diào)試3.1設(shè)置臨時和條件斷點對于一般的斷點,可在SourceView中很容易得設(shè)置。如果斷點處在循環(huán)體中,可能不期望每次循環(huán)都跳到調(diào)試畫板,這時候需要設(shè)置臨時和條件斷點。斷點在多少次循環(huán)后被觸發(fā),屬于臨時觸發(fā);斷點在滿足某種表達式條件后被觸發(fā),屬于條件觸發(fā);在相同的斷點位置可以同時存在臨時和條件兩種觸發(fā)機制。打開對應(yīng)的斷點編輯彈出窗口(在BreakpointView和SourceView中都能打開),在Occurrence欄目填入一個整數(shù),代表每循環(huán)多少次才觸發(fā)這個斷點;在Condition欄目填入一個表達式,比如ll_i=10,這樣,在這個循環(huán)中,每次在變量ll_i=10這個條件滿足時才觸發(fā)斷點。可同時設(shè)置臨時和條件觸發(fā),這種情況下必須兩者都滿足才觸發(fā)斷點。當(dāng)然條件觸發(fā)也可以用于不屬于循環(huán)性質(zhì)的代碼段里面。3.2設(shè)置變量值改變斷點如果調(diào)試特別關(guān)心某個變量,關(guān)心這個變量的值在哪里改變了(比如由false變成true,由0變成非0等),這時可以設(shè)置變量值改變觸發(fā)斷點。方法是在Variables中選擇要調(diào)試的變量,右鍵彈出菜單,選擇BreakonChange,這樣,每次這個變量的值發(fā)生改變,就會觸發(fā)斷點,能夠方便觀察哪些代碼對這個變量進行了賦值操作,有利于對這個變量的變化軌跡進行跟蹤。3.3Just-in-time調(diào)試當(dāng)按正常模式而不是調(diào)試模式運行應(yīng)用的時候,如果程序運行不正常,甚至報錯,可能需要退出程序,重新打開調(diào)試畫板,調(diào)試這個異?;蛘咤e誤,比較麻煩;選擇just-in-time模式,就能在遇到需要調(diào)試的時候,即時切換到調(diào)試模式。選擇菜單Windows>SystemOptions…在彈出窗口中選中JustInTimeDebugging。在按正常模式運行程序時,只要切換到PowerBuilder窗口,就提示是否中斷和調(diào)試程序,選擇調(diào)試,會進入調(diào)試模式;如果出現(xiàn)系統(tǒng)錯誤,調(diào)試畫板會自動彈出,讓開發(fā)者進行調(diào)試,而不必特意選擇調(diào)試模式。4遠程調(diào)試4.1遠程調(diào)試的條件和準(zhǔn)備討論了本地調(diào)試的一些技術(shù)和技巧后,轉(zhuǎn)入遠程調(diào)試方面。在遠程調(diào)試中可以充分利用以上技術(shù)技巧。要進行遠程調(diào)試首先要滿足幾個條件:被調(diào)試的組件是PowerBuilder部署的nvo(非可視化)類型,RemoteDebug(遠程調(diào)試)選項是打開的;前者說明這種調(diào)試只局限于PB組件開發(fā)范疇,而不是其他類型的Jaguar組件,后者的滿足要進入部署組件的工程對象畫板,打開屬性窗口,在components頁框里看Supportsremotedebugging選項是否打開,沒有的話就打開它。以上的條件滿足之后,在組件腳本里面設(shè)置好斷點。打開調(diào)試畫板,在PainterBar工具欄按StartRemoteDebugging按鈕,而不是通常調(diào)試本地應(yīng)用的Start按鈕,然后填寫連接JaguarCTS組件服務(wù)器的信息,選中要調(diào)試的組件。這時候可等待客戶端的程序調(diào)用該組件了。對于斷點的設(shè)置,最好先打開組件對象,在需要調(diào)試的地方設(shè)置上斷點,再進入調(diào)試畫板,這樣所設(shè)置的斷點已經(jīng)存在了,而不必再在SourceBrowser里面去找。4.2遠程調(diào)試具體方法運行一個客戶端程序,這個程序在另一個PowerBuilder中運行、或者是一個別的機器上的可執(zhí)行程序,但都必須訪問所調(diào)試JaguarCTS組件的方法和事件,這樣才能觸發(fā)剛才的遠程調(diào)試,當(dāng)客戶端程序調(diào)用JaguarCTS的組件,并且運行到斷點處(陷入到組件里面),剛才調(diào)試組件的PowerBuilder會在Windows任務(wù)欄中閃爍,提示用戶可進行組件的遠程調(diào)試了,切換到遠程調(diào)試窗口,就能看到腳本和斷點,調(diào)試方法與本地腳本調(diào)試基本相同,這時候需要充分利用前面所討論的調(diào)試技術(shù)。打開菜單View>Instances,對于InstancesView,建議在遠程調(diào)試階段始終打開,這樣能方便的切換對不同實例的調(diào)試,在InstancesView里能觀察中間層組件實例的三個狀態(tài):running代表這個組件實例在運行;,idle代表實例是空閑的,它的存在只是等待客戶對它的方法的陷入;stopped代表運行中止?fàn)顟B(tài)。三個狀態(tài)中一般是看不到running狀態(tài)的,因為當(dāng)觸發(fā)調(diào)試的時候,實例是停在斷點處,看到的狀態(tài)是stopped,當(dāng)調(diào)用完方法(組件方法陷入完成后),實例狀態(tài)轉(zhuǎn)為idle,running狀態(tài)由于陷入代碼運行時間非??欤銦o法觀察到,除非你設(shè)定了某種循環(huán)讓組件方法運行時間延長才能觀察到如果有兩個以上的客戶端陷入到相同的組件中,會出現(xiàn)兩個實例,它們對應(yīng)相同的包和組件信息,但標(biāo)號不同,由實例號1、2…標(biāo)識出,而且它們的狀態(tài)可能不同,有的是stopped,有的可能是idle。選擇不同的instance,可以分別調(diào)試,盡管不同的實例可能對應(yīng)相同的組件。5結(jié)束語

建議調(diào)試的時候把源碼中的窗口置頂函數(shù)注釋掉,如setposition(topmost!)之類的函數(shù),否則會切換不到調(diào)試畫板。遠程調(diào)試比本地調(diào)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論