版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第9章程序調(diào)試與公布發(fā)行
本章目的:通過(guò)本章學(xué)習(xí)了解和掌握有關(guān)VB程序調(diào)試、發(fā)布應(yīng)用程序的方法。
第9章調(diào)試和錯(cuò)誤處理第9章程序調(diào)試與出錯(cuò)處理9.1錯(cuò)誤類型和程序模式9.2程序調(diào)試9.3捕獲錯(cuò)誤及處理
9.3.1Err對(duì)象
9.3.2捕獲錯(cuò)誤
9.3.3設(shè)計(jì)錯(cuò)誤處理程序9.4程序發(fā)布
第9章調(diào)試和錯(cuò)誤處理9.1錯(cuò)誤類型和程序模式調(diào)試:在應(yīng)用程序中查找并修改錯(cuò)誤的過(guò)程稱之為調(diào)試。
1.錯(cuò)誤類型VisualBasic應(yīng)用程序中出現(xiàn)的錯(cuò)誤分為三類:編譯錯(cuò)誤、運(yùn)行時(shí)錯(cuò)誤和邏輯錯(cuò)誤。第9章調(diào)試和錯(cuò)誤處理9.1錯(cuò)誤類型和程序模式(1)編譯錯(cuò)誤是指在程序編譯過(guò)程中出現(xiàn)的錯(cuò)誤。產(chǎn)生原因:通常是由于不正確書(shū)寫(xiě)代碼而產(chǎn)生的。例如關(guān)鍵字寫(xiě)錯(cuò)、遺漏標(biāo)點(diǎn)符號(hào)等。
VisualBasic利用自動(dòng)語(yǔ)法檢查功能找出有語(yǔ)法錯(cuò)誤的語(yǔ)句,幫助用戶糾正語(yǔ)法錯(cuò)誤。自動(dòng)語(yǔ)法檢查是在“工具/選項(xiàng)/編輯器”中設(shè)置,設(shè)置好自動(dòng)語(yǔ)法檢查功能后,只要在代碼窗口中出現(xiàn)一個(gè)有語(yǔ)法錯(cuò)誤的語(yǔ)句,當(dāng)將光標(biāo)移到其它語(yǔ)句行時(shí)就會(huì)立即顯示錯(cuò)誤提示信息。如圖所示。第9章調(diào)試和錯(cuò)誤處理9.1錯(cuò)誤類型和程序模式第9章調(diào)試和錯(cuò)誤處理9.1錯(cuò)誤類型和程序模式(2)運(yùn)行時(shí)的錯(cuò)誤是指應(yīng)用程序在運(yùn)行期間執(zhí)行了非法操作所產(chǎn)生的錯(cuò)誤,例如除法運(yùn)算中除數(shù)為零,打開(kāi)文件時(shí)文件沒(méi)找到,訪問(wèn)磁盤(pán)時(shí)驅(qū)動(dòng)器中無(wú)盤(pán)等。例9.1:下標(biāo)越界錯(cuò)誤
PrivateSubCommand1_Click()DimA(10)asIntegerDimIasInteger第9章調(diào)試和錯(cuò)誤處理9.1錯(cuò)誤類型和程序模式
ForI=0to20A(I)=INextEndSub如圖所示第9章調(diào)試和錯(cuò)誤處理
9.1錯(cuò)誤類型和程序模式第9章調(diào)試和錯(cuò)誤處理9.1錯(cuò)誤類型和程序模式(3)邏輯錯(cuò)誤當(dāng)應(yīng)用程序未按預(yù)期方式執(zhí)行時(shí),就會(huì)產(chǎn)生邏輯錯(cuò)誤。例9.2某程序如下:PrivateSubCommand1_Click()DimsummberAsIntegerDimIAsIntegerForI=0to100summber=sumber+INextPrintsummberEndsub(變量名寫(xiě)錯(cuò))第9章調(diào)試和錯(cuò)誤處理9.1錯(cuò)誤類型和程序模式2.應(yīng)用程序的模式有三種模式:設(shè)計(jì)模式,運(yùn)行模式和中斷模式。(1)設(shè)計(jì)模式啟動(dòng)VisualBasic6.0后就進(jìn)入設(shè)計(jì)模式。功能:設(shè)計(jì)窗體布局、繪制控件、編寫(xiě)代碼、設(shè)計(jì)并查看屬性等。另外還可以在代碼窗口中設(shè)置斷點(diǎn),創(chuàng)建監(jiān)視表達(dá)式,但不能在設(shè)計(jì)模式下使用調(diào)試工具。
第9章調(diào)試和錯(cuò)誤處理9.1錯(cuò)誤類型和程序模式(2)運(yùn)行模式單擊工具欄中的啟動(dòng)按鈕或者選擇“運(yùn)行”菜單中的“啟動(dòng)”選項(xiàng),都可以進(jìn)入運(yùn)行模式。功能:同應(yīng)用程序交換信息,但不能修改程序。(3)中斷模式功能:分析應(yīng)用程序的當(dāng)前狀態(tài)并修改程序代碼,并且所有的調(diào)試工具都是在中斷模式下運(yùn)行的。第9章調(diào)試和錯(cuò)誤處理9.1錯(cuò)誤類型和程序模式進(jìn)入中斷模式有幾種方式:在設(shè)計(jì)模式下通過(guò)設(shè)置斷點(diǎn)或者使用“stop”語(yǔ)句將應(yīng)用程序置于中斷模式選擇“運(yùn)行”菜單中的“中斷”選項(xiàng),或者單擊“中斷”按鈕將應(yīng)用程序置于中斷模式按下Ctrl+Break鍵來(lái)引導(dǎo)程序由運(yùn)行模式切換到中斷模式。應(yīng)用程序在運(yùn)行時(shí)產(chǎn)生錯(cuò)誤,也可以自動(dòng)切換到中斷模式。第9章調(diào)試和錯(cuò)誤處理9.2程序調(diào)試是指在應(yīng)用程序中查找并修改錯(cuò)誤的過(guò)程。1.調(diào)試工具調(diào)試工具有:切換斷點(diǎn)、逐語(yǔ)句、逐過(guò)程、跳出,本地窗口、立即窗口、監(jiān)視窗口、快速監(jiān)視和調(diào)試堆棧。通過(guò)“調(diào)試”菜單或調(diào)試工具欄可以獲得全部調(diào)試工具。如圖所示。第9章調(diào)試和錯(cuò)誤處理9.2程序調(diào)試第9章調(diào)試和錯(cuò)誤處理9.2程序調(diào)試(1)切換斷點(diǎn)運(yùn)行一個(gè)程序時(shí),遇到具有斷點(diǎn)的代碼會(huì)中斷應(yīng)用程序的執(zhí)行。斷點(diǎn)設(shè)置位置:通常斷點(diǎn)被設(shè)置在代碼中被懷疑可能會(huì)出問(wèn)題的區(qū)域,斷點(diǎn)可以在中斷模式或設(shè)計(jì)模式下設(shè)置。設(shè)置斷點(diǎn)的方法:通常是在代碼窗口中,在要設(shè)置斷點(diǎn)的那一行代碼的左邊空白區(qū)單擊鼠標(biāo)左鍵設(shè)置。如圖所示。第9章調(diào)試和錯(cuò)誤處理9.2程序調(diào)試第9章調(diào)試和錯(cuò)誤處理9.2程序調(diào)試設(shè)置斷點(diǎn)后,VisualBasic將以粗體突出顯示設(shè)定行,并在該行前面顯示一個(gè)黑色(或紅色)圓點(diǎn)符號(hào)。(2)逐語(yǔ)句:逐語(yǔ)句執(zhí)行就是一條語(yǔ)句一條語(yǔ)句的執(zhí)行代碼,通過(guò)查看應(yīng)用程的窗體或調(diào)試窗口來(lái)判斷這條語(yǔ)句是否正確。如果執(zhí)行的代碼是過(guò)程調(diào)用,也會(huì)跟蹤到被調(diào)用過(guò)程中繼續(xù)一條語(yǔ)句一條語(yǔ)句的執(zhí)行。(3)逐過(guò)程:逐過(guò)程執(zhí)行就是以整個(gè)函數(shù)或過(guò)程為一個(gè)整體,一次執(zhí)行下去。第9章調(diào)試和錯(cuò)誤處理9.2程序調(diào)試逐過(guò)程與逐語(yǔ)句的相似之處:也是一條語(yǔ)句一條語(yǔ)句的執(zhí)行代碼。不同之處是:當(dāng)執(zhí)行的代碼是過(guò)程調(diào)用時(shí),逐語(yǔ)句會(huì)跟蹤到被調(diào)用過(guò)程中,而逐過(guò)程不會(huì)跟蹤到被調(diào)用過(guò)程中,它把被調(diào)用過(guò)程作為一個(gè)整體一次執(zhí)行過(guò)去。第9章調(diào)試和錯(cuò)誤處理9.2程序調(diào)試(4)跳出:當(dāng)用逐語(yǔ)句方法跟蹤進(jìn)入過(guò)程或函數(shù)中,如果發(fā)現(xiàn)過(guò)程中的語(yǔ)句沒(méi)有問(wèn)題,可以單擊“調(diào)試”工具欄的“跳出”按鈕,從當(dāng)前的過(guò)程中跳出,去執(zhí)行過(guò)程調(diào)用者的下一條語(yǔ)句。(5)本地窗口:用戶在調(diào)試程序時(shí)可以利用“本地”窗口顯示當(dāng)前過(guò)程中所有變量的值。當(dāng)程序的執(zhí)行從一個(gè)過(guò)程切換到另一個(gè)過(guò)程時(shí),“本地”窗口的內(nèi)容會(huì)發(fā)生改變,它顯示的是當(dāng)前過(guò)程中可用的變量。如圖所示。第9章調(diào)試和錯(cuò)誤處理9.2程序調(diào)試第9章調(diào)試和錯(cuò)誤處理9.2程序調(diào)試(6)立即窗口功能:可以檢查某個(gè)屬性或者變量的值,還可以執(zhí)行單個(gè)的過(guò)程,對(duì)表達(dá)式求值,或?yàn)樽兞炕驅(qū)傩再x值等。顯示立即窗口的方法:?jiǎn)螕簟罢{(diào)試”工具欄上的“立即窗口”按鈕。如圖所示。第9章調(diào)試和錯(cuò)誤處理9.2程序調(diào)試第9章調(diào)試和錯(cuò)誤處理9.2程序調(diào)試在應(yīng)用程序中輸出信息到立即窗口的方法:在print方法前加上Debug即可。例如:var=9ption=“演示程序”(7)監(jiān)視窗口功能:對(duì)用戶定義的表達(dá)式進(jìn)行監(jiān)視。
監(jiān)視表達(dá)式設(shè)置方法:在監(jiān)視窗口中單擊鼠標(biāo)右鍵,從彈出的快捷菜單中選擇所需的功能。監(jiān)視表達(dá)式可以在監(jiān)視窗口中添加、刪除或重新編輯。如圖所示。
第9章調(diào)試和錯(cuò)誤處理9.2程序調(diào)試第9章調(diào)試和錯(cuò)誤處理9.2程序調(diào)試(8)快速監(jiān)視功能:檢查那些沒(méi)有在監(jiān)視窗口中定義的屬性、變量或表達(dá)式的值。方法:在代碼窗口中選中要進(jìn)行快速監(jiān)視的表達(dá)式,然后單擊調(diào)試工具欄的“快速監(jiān)視”按鈕(9)調(diào)用堆棧功能:顯示所有活動(dòng)過(guò)程調(diào)用的一個(gè)列表?;顒?dòng)過(guò)程調(diào)用:所謂活動(dòng)過(guò)程調(diào)用,就是應(yīng)用程序已啟動(dòng)但尚未完成的過(guò)程。第9章調(diào)試和錯(cuò)誤處理9.2程序調(diào)試?yán)?.3完成求1---5這5個(gè)數(shù)的階乘,并且將這5個(gè)數(shù)的階乘分別存放到數(shù)組a(1)---a(5)的5個(gè)元素中。操作步驟如下:(1)新建工程并在窗體上添加一個(gè)CommandButton控件。將CommandButton控件的Caption屬性設(shè)置為“計(jì)算”。第9章調(diào)試和錯(cuò)誤處理9.2程序調(diào)試(2)編寫(xiě)應(yīng)用程序代碼PrivateSubCommand1_Click()Dima(5)AsIntegerDimk,oAsIntegerFork=1to5a(k)=factor(k)NextForo=1to5Printa(0)NextEndSub第9章調(diào)試和錯(cuò)誤處理9.2程序調(diào)試Functionfactor(xAsInteger)AsIntegerDimi,tAsIntegert=1Fori=1toxt=t*iNextfactor=tEndFuction
第9章調(diào)試和錯(cuò)誤處理9.2程序調(diào)試(3)運(yùn)行該程序,并單擊“計(jì)算”按鈕。運(yùn)行結(jié)果如圖所示。第9章調(diào)試和錯(cuò)誤處理9.2程序調(diào)試從運(yùn)行結(jié)果可以看出,結(jié)果是不正確的,采取如下步驟檢測(cè)參數(shù)傳遞是否發(fā)生錯(cuò)誤。①打開(kāi)代碼窗口設(shè)置斷點(diǎn)。將斷點(diǎn)設(shè)置在發(fā)生函數(shù)調(diào)用的語(yǔ)句。即將a(k)=factor(k)語(yǔ)句設(shè)置為斷點(diǎn)位置。②設(shè)置斷點(diǎn)后,重新運(yùn)行應(yīng)用程序。單擊“計(jì)算”按鈕,程序在斷點(diǎn)處中斷運(yùn)行,進(jìn)入中斷模式。如圖所示。
第9章調(diào)試和錯(cuò)誤處理第9章調(diào)試和錯(cuò)誤處理9.2程序調(diào)試③打開(kāi)調(diào)試工具欄、本地窗口和立即窗口,用于監(jiān)視程序的運(yùn)行。如圖所示。第9章調(diào)試和錯(cuò)誤處理第9章調(diào)試和錯(cuò)誤處理9.2程序調(diào)試④單擊調(diào)試工具欄上的“逐語(yǔ)句”按鈕,讓程序逐句執(zhí)行。利用“逐語(yǔ)句”工具逐步運(yùn)行被調(diào)用函數(shù)factor,同時(shí)觀察每個(gè)變量的變化情況。經(jīng)認(rèn)真分析后,發(fā)現(xiàn)被調(diào)用函數(shù)factor沒(méi)有出現(xiàn)錯(cuò)誤。⑤當(dāng)流程回到Command1_Click()中時(shí),我們利用立即窗口顯示一下a(k)的值。顯示為1,結(jié)果正確。⑥經(jīng)過(guò)上述跟蹤檢測(cè),發(fā)現(xiàn)前面的語(yǔ)句、函數(shù)及參數(shù)沒(méi)有錯(cuò)誤。那么錯(cuò)誤一定在Click事件過(guò)程中的For語(yǔ)句中,也就是Printa(0)語(yǔ)句。即將o寫(xiě)成了0。第9章調(diào)試和錯(cuò)誤處理9.3捕獲錯(cuò)誤及處理
9.3.1Err對(duì)象錯(cuò)誤處理程序的功能:用于處理那些可預(yù)見(jiàn)但卻無(wú)法避免的運(yùn)行時(shí)錯(cuò)誤。Err對(duì)象主要用于保存最新的運(yùn)行時(shí)錯(cuò)誤信息。1.Err對(duì)象的常用屬性①Number屬性為數(shù)值類型,記錄錯(cuò)誤號(hào)②Source屬性為字符串,記錄錯(cuò)誤產(chǎn)生者的工程名稱。③Description屬性為字符串,記錄簡(jiǎn)短的錯(cuò)誤信息描述。
第9章調(diào)試和錯(cuò)誤處理
9.3.1Err對(duì)象2.Err對(duì)象的常用方法(1)Clear方法:清除Err對(duì)象的當(dāng)前屬性值。Err對(duì)象的屬性值在執(zhí)行了Resume語(yǔ)句或OnError語(yǔ)句后將會(huì)被清除。也可以利用Clear方法清除。語(yǔ)句格式為:Err.Clear(2)Raise方法:用于產(chǎn)生錯(cuò)誤,有助于調(diào)試錯(cuò)誤處理程序。Raise語(yǔ)句的常用形式為:Err.RaiseNumber,Source,Description
第9章調(diào)試和錯(cuò)誤處理
9.3.1Err對(duì)象(2)Raise方法參數(shù)說(shuō)明:①Number數(shù)值型,指定錯(cuò)誤號(hào),范圍為0~65535②Source:字符串,指定產(chǎn)生錯(cuò)誤的對(duì)象,可選項(xiàng)③Description:字符串,錯(cuò)誤信息的簡(jiǎn)短描述,可選項(xiàng)例如:模擬產(chǎn)生驅(qū)動(dòng)器無(wú)盤(pán)錯(cuò)誤Err.Raise71,“project1”,“disknotready”
第9章調(diào)試和錯(cuò)誤處理9.3.2捕獲錯(cuò)誤使用捕獲錯(cuò)誤可以獲得錯(cuò)誤信息,并調(diào)用指定代碼處理錯(cuò)誤,然后繼續(xù)執(zhí)行程序。使用OnErr語(yǔ)句捕獲錯(cuò)誤,其語(yǔ)法結(jié)構(gòu)為:
OnErrorGoto標(biāo)號(hào)通常該語(yǔ)句放在過(guò)程或函數(shù)的開(kāi)始位置。如果在過(guò)程中激活了錯(cuò)誤捕獲,只有當(dāng)過(guò)程結(jié)束時(shí)才停止。如果需要在過(guò)程執(zhí)行中停止錯(cuò)誤捕獲,可以利用如下語(yǔ)句:
OnErrorGoto0執(zhí)行該語(yǔ)句后,當(dāng)前過(guò)程立即喪失錯(cuò)誤捕獲功能。
第9章調(diào)試和錯(cuò)誤處理9.3.3設(shè)計(jì)錯(cuò)誤處理程序設(shè)計(jì)錯(cuò)誤處理程序一般包括三步:1.設(shè)置錯(cuò)誤捕獲使用Error語(yǔ)句激活捕獲,并指引應(yīng)用程序跳轉(zhuǎn)到標(biāo)記著錯(cuò)誤處理例程開(kāi)始的標(biāo)號(hào)處。2.編寫(xiě)錯(cuò)誤處理程序3.退出處理程序當(dāng)指定的錯(cuò)誤處理完成后,應(yīng)該指引程序跳轉(zhuǎn)到合適的位置繼續(xù)執(zhí)行。Resume語(yǔ)句用于退出錯(cuò)誤處理程序,Resume語(yǔ)句有三種用法:①Resume②ResumeNext③Resume標(biāo)號(hào)第9章調(diào)試和錯(cuò)誤處理9.3.3設(shè)計(jì)錯(cuò)誤處理程序例9.4設(shè)計(jì)錯(cuò)誤處理程序。
PrivateSubCommand1_Click()DimfnameAsStringDimnumAsIntegerDimstrAsStringOnErrorGotoErr1‘設(shè)置捕獲錯(cuò)誤
fname=“a:\test.dat”P(pán)rintdir(fname)Exit
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 樣品管理管理制度重要性
- 門(mén)面房租賃合同范本(31篇)
- 學(xué)生軍訓(xùn)鑒定表個(gè)人總結(jié)【12篇】
- 植樹(shù)節(jié)大大班教案8篇
- 量的傳遞幼兒園教案8篇
- 律師授權(quán)委托書(shū)
- 神經(jīng)外科實(shí)施延續(xù)性護(hù)理的實(shí)踐探討
- 箱變安裝施工工程方案
- 工業(yè)循環(huán)冷卻水處理總復(fù)習(xí)A
- 企業(yè)員工崗前安全培訓(xùn)試題及參考答案【B卷】
- 大數(shù)據(jù)營(yíng)銷-分章練習(xí)題(含答案)
- 設(shè)備管理思路及方案
- 北師大版四年級(jí)數(shù)學(xué)上冊(cè)第四單元運(yùn)算律 大單元作業(yè)設(shè)計(jì)
- 川教版小學(xué)信息技術(shù)四年級(jí)上冊(cè)教案全冊(cè)
- 四年級(jí)英語(yǔ) Unit 1 Can you run fast“十市聯(lián)賽”一等獎(jiǎng)
- 紙袋檢測(cè)報(bào)告
- 安全施工保證措施
- 大數(shù)據(jù)治理教學(xué)課件
- 制鞋業(yè)產(chǎn)品質(zhì)量控制與認(rèn)證體系建立分析
- 醫(yī)療質(zhì)量月分析報(bào)告
- 基本權(quán)利的規(guī)范建構(gòu)
評(píng)論
0/150
提交評(píng)論