計(jì)算機(jī)論文PowerBuilder高級(jí)調(diào)試技術(shù)與技巧_第1頁(yè)
計(jì)算機(jī)論文PowerBuilder高級(jí)調(diào)試技術(shù)與技巧_第2頁(yè)
計(jì)算機(jī)論文PowerBuilder高級(jí)調(diào)試技術(shù)與技巧_第3頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

1、PowerBuilder高級(jí)調(diào)試技術(shù)與技巧陳麗紅延邊廣播電視大學(xué)摘要:介紹PowerBuilder編程工具的高級(jí)調(diào)試技術(shù),包括臨時(shí)斷點(diǎn)和條件斷點(diǎn)設(shè)置、變量值改變斷點(diǎn)設(shè)置、Just-in-time調(diào)試、中間層Jaguar CTS組件的遠(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)用開(kāi)發(fā)的主流編程工具,隨著從Client/Server的兩層開(kāi)發(fā)模式到三層甚至多層開(kāi)發(fā)模式的過(guò)渡,PowerBuilder不斷增加新的功能以適應(yīng)和推進(jìn)這種轉(zhuǎn)變。PowerBuilder7的版本已經(jīng)可以通過(guò)開(kāi)發(fā)Jaguar中間層組件創(chuàng)建典型的分布式應(yīng)用

2、。這就給PowerBuilder的調(diào)試技術(shù)提出新的要求。 調(diào)試技術(shù)在任何軟件開(kāi)發(fā)中都站有及其重要的位置。利用PowerBuilder開(kāi)發(fā)也不例外。PowerBuilder工具集成了強(qiáng)大的調(diào)試畫(huà)板,使得調(diào)試變得容易,但其中的一些高級(jí)的調(diào)試技巧和技術(shù)并不是很容易掌握,而掌握和使用這些調(diào)試的高級(jí)技巧和技術(shù)是開(kāi)發(fā)高質(zhì)量軟件產(chǎn)品的重要保證,也是優(yōu)秀的PowerBuilder開(kāi)發(fā)者必須具備的能力。 PowerBuilder提供的高級(jí)調(diào)試技術(shù)主要包括:設(shè)置臨時(shí)和條件斷點(diǎn)、設(shè)置變量值改變斷點(diǎn)、Just-in-time調(diào)試、Jaguar組件遠(yuǎn)程調(diào)試術(shù)(Remote Debug)。前三種調(diào)試技巧適合于本地調(diào)試;最

3、后一種是分布式應(yīng)用中的調(diào)試技巧,可以在客戶端對(duì)部署在應(yīng)用服務(wù)端Jaguar CTS(Component Transaction Server組件事務(wù)服務(wù)器簡(jiǎn)稱)的組件進(jìn)行調(diào)試,包括調(diào)試陷入到事件或者方法的腳本,觀察和更改組件變量等。 遠(yuǎn)程調(diào)試技術(shù)以本地調(diào)試為基礎(chǔ),是PowerBuilder做分布式開(kāi)發(fā)的關(guān)鍵性技術(shù),盡管與本地調(diào)試類同,但卻又有其獨(dú)特和復(fù)雜的一面,是做好PowerBuilder中間層組件開(kāi)發(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)試畫(huà)板

4、簡(jiǎn)介 調(diào)試畫(huà)板集成了PowerBuilder強(qiáng)大的調(diào)試功能,包括以下主要的部分: 1)Breakpoints View:展示所有要調(diào)試的對(duì)象、事件、代碼行信息、通過(guò)它很容易定位到需要調(diào)試的代碼或者進(jìn)行斷點(diǎn)使能和屏蔽等操作。 2)Callstacks View:展示調(diào)試的斷點(diǎn)在程序中調(diào)用的層次,返回時(shí)會(huì)按照這個(gè)壓棧順序返回。提供了程序執(zhí)行的宏觀線索。 3)Instances:展示實(shí)例化的遠(yuǎn)程組件狀態(tài)等信息。只適用于遠(yuǎn)程調(diào)試。 4)Objects In Memory:展示加載到內(nèi)存的對(duì)象列表。通過(guò)它可以觀察對(duì)象在內(nèi)存里的占用情況(不適用于遠(yuǎn)程調(diào)試)。 5)Source View:展示代碼。 6)S

5、ource Browser:展示應(yīng)用中所有的對(duì)象列表。 7)Source History:展示在Source View中曾經(jīng)出現(xiàn)過(guò)的代碼列表。 8)Variables View::展示所有類型的變量??梢栽谡{(diào)試畫(huà)板中人為修改變量值,或者設(shè)置在某個(gè)變量的值發(fā)生改變時(shí)中斷程序而觸發(fā)調(diào)試。 9)Watch View:展示選擇出來(lái)的變量值,進(jìn)行表達(dá)式的運(yùn)算等。3本地調(diào)試3.1設(shè)置臨時(shí)和條件斷點(diǎn) 對(duì)于一般的斷點(diǎn),可在Source View中很容易得設(shè)置。如果斷點(diǎn)處在循環(huán)體中,可能不期望每次循環(huán)都跳到調(diào)試畫(huà)板,這時(shí)候需要設(shè)置臨時(shí)和條件斷點(diǎn)。斷點(diǎn)在多少次循環(huán)后被觸發(fā),屬于臨時(shí)觸發(fā);斷點(diǎn)在滿足某種表達(dá)式條件后

6、被觸發(fā),屬于條件觸發(fā);在相同的斷點(diǎn)位置可以同時(shí)存在臨時(shí)和條件兩種觸發(fā)機(jī)制。 打開(kāi)對(duì)應(yīng)的斷點(diǎn)編輯彈出窗口(在Breakpoint View和Source View中都能打開(kāi)),在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變成tr

7、ue,由0變成非0等),這時(shí)可以設(shè)置變量值改變觸發(fā)斷點(diǎn)。方法是在Variables中選擇要調(diào)試的變量,右鍵彈出菜單,選擇Break on Change,這樣,每次這個(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ò),可能需要退出程序,重新打開(kāi)調(diào)試畫(huà)板,調(diào)試這個(gè)異?;蛘咤e(cuò)誤,比較麻煩;選擇just-in-time模式,就能在遇到需要調(diào)試的時(shí)候,即時(shí)切換到調(diào)試模式。 選擇菜單WindowsSystem Options在彈出窗口中

8、選中Just In Time Debugging。在按正常模式運(yùn)行程序時(shí),只要切換到PowerBuilder窗口,就提示是否中斷和調(diào)試程序,選擇調(diào)試,會(huì)進(jìn)入調(diào)試模式;如果出現(xiàn)系統(tǒng)錯(cuò)誤,調(diào)試畫(huà)板會(huì)自動(dòng)彈出,讓開(kāi)發(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(非可視化)類型,Remote Debug(遠(yuǎn)程調(diào)試)選項(xiàng)是打開(kāi)的;前者說(shuō)明這種調(diào)試只局限于PB組件開(kāi)發(fā)范疇,而不是其他類型的Jaguar組

9、件,后者的滿足要進(jìn)入部署組件的工程對(duì)象畫(huà)板,打開(kāi)屬性窗口,在components頁(yè)框里看Supports remote debugging選項(xiàng)是否打開(kāi),沒(méi)有的話就打開(kāi)它。 以上的條件滿足之后,在組件腳本里面設(shè)置好斷點(diǎn)。打開(kāi)調(diào)試畫(huà)板,在PainterBar工具欄按Start Remote Debugging按鈕,而不是通常調(diào)試本地應(yīng)用的Start按鈕,然后填寫(xiě)連接Jaguar CTS組件服務(wù)器的信息,選中要調(diào)試的組件。這時(shí)候可等待客戶端的程序調(diào)用該組件了。 對(duì)于斷點(diǎn)的設(shè)置,最好先打開(kāi)組件對(duì)象,在需要調(diào)試的地方設(shè)置上斷點(diǎn),再進(jìn)入調(diào)試畫(huà)板,這樣所設(shè)置的斷點(diǎn)已經(jīng)存在了,而不必再在Source Brow

10、ser里面去找。4.2遠(yuǎn)程調(diào)試具體方法 運(yùn)行一個(gè)客戶端程序,這個(gè)程序在另一個(gè)PowerBuilder中運(yùn)行、或者是一個(gè)別的機(jī)器上的可執(zhí)行程序,但都必須訪問(wèn)所調(diào)試Jaguar CTS組件的方法和事件,這樣才能觸發(fā)剛才的遠(yuǎn)程調(diào)試,當(dāng)客戶端程序調(diào)用Jaguar CTS的組件,并且運(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ù)。 打開(kāi)菜單ViewInstances,對(duì)于Instances View,建議在遠(yuǎn)

11、程調(diào)試階段始終打開(kāi),這樣能方便的切換對(duì)不同實(shí)例的調(diào)試,在Instances View里能觀察中間層組件實(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í)例,它

12、們對(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)試畫(huà)板。 遠(yuǎn)程調(diào)試比本地調(diào)試復(fù)雜得多,比如對(duì)相同的組件可以陷入多個(gè)方法的調(diào)用中,每個(gè)客戶端的調(diào)用所走的位置不同,這時(shí)候需要切換不同的實(shí)例。 遠(yuǎn)程調(diào)試選項(xiàng)在一個(gè)組件調(diào)試成熟之后需要禁止掉,否則,就有可能被客戶端的調(diào)試機(jī)制所利用,源代碼被別的用戶調(diào)試和檢查。 適用于本地調(diào)試的Object In Memory和Watch View里面的表達(dá)式計(jì)算不被現(xiàn)在的PowerBuilder遠(yuǎn)程調(diào)試技術(shù)支持。 參考文獻(xiàn)1David M. C. Client/Server: A Developers Guide. Revised Edition. IDG (M&T) Books, 1998.2David M. C. Power Builder 6: A Developers Guide. Revised Edition, .IDG (M&T) Books, 1998.3 李志軍

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論