在Visual Basic中調(diào)試程序_第1頁
在Visual Basic中調(diào)試程序_第2頁
在Visual Basic中調(diào)試程序_第3頁
在Visual Basic中調(diào)試程序_第4頁
在Visual Basic中調(diào)試程序_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、調(diào)試Il debug1語法錯誤編程錯誤包括語法錯誤、運行時錯誤和邏輯錯誤。不正確地創(chuàng)建代碼時就會出現(xiàn)語法錯誤,包括錯誤地輸入關(guān)鍵字,遺漏了必要的標(biāo)點符號或者不正確的結(jié)構(gòu)。Visual Basic包含有【自動語法檢測】選項,可以在用戶編寫程序時檢測和更正語法錯誤。如果使用了這個選項,Visual Basic就會在用戶輸入程序時解釋這個程序。當(dāng)它發(fā)現(xiàn)錯誤時,就會加亮顯示這個程序代碼并顯示一個消息框來解釋原因和提供幫助。這樣用戶就可以在繼續(xù)編程之前更正錯誤。2運行時錯誤當(dāng)程序語句師徒執(zhí)行一條不可能執(zhí)行的操作時,就會發(fā)生運行時錯誤。常見的運行時錯誤是試圖從一個不存在的文件中讀取數(shù)據(jù),另一個是試圖執(zhí)行被

2、零除的操作。在用戶的程序中為這些錯誤提供出錯處理函數(shù)和錯誤處理例程是很重要的。3邏輯錯誤當(dāng)應(yīng)用程序不能按期望的方式執(zhí)行時會發(fā)生邏輯錯誤。這些錯誤是很難發(fā)現(xiàn)的。因為應(yīng)用程序的語法完全合法,運行時也不執(zhí)行非法操作,但是仍然會產(chǎn)生錯誤。這類錯誤通常不會產(chǎn)生出錯消息。驗證應(yīng)用程序執(zhí)行的唯一方法就是測試它并分析運行結(jié)果。4中斷模式使用Visual Basic開發(fā)應(yīng)用程序時,主要會用到兩種模式:設(shè)計模式是創(chuàng)建和編輯程序用的,運行模式是看程序的運行效果用的。中斷模式可以中止應(yīng)用程序的執(zhí)行。在中斷模式下,可以修改應(yīng)用程序的代碼、確定已經(jīng)被調(diào)用的活動過程,查看變量、屬性和表達(dá)式的值,修改程序流程和執(zhí)行Visua

3、l Basic語句。在運行程序時遇到斷點、遇到Stop語句、觸發(fā)了已放置的查看表達(dá)式、在程序執(zhí)行時按下了控制鍵加暫停鍵、程序代碼行中的語句生成了一個運行時錯誤,在出現(xiàn)的提示框中單擊了【調(diào)試】,Debug. Assert語句被判斷為False時,Visual Basic會進(jìn)入中斷模式。5設(shè)置斷點斷點是程序中的一個標(biāo)志,它告訴Visual Basic暫停執(zhí)行。如果你懷疑程序中的某個地方有問題,想要停止執(zhí)行并使用調(diào)試工具,就要在那個地方設(shè)置斷點。斷點是臨時存在的,不會保存在程序中。設(shè)置斷點就是把插入點位于過程中的某一行,在這里程序的執(zhí)行將會中止。在【調(diào)試】菜單上,單擊【切換斷點】,或按下F9鍵,單擊

4、這行程序代碼旁邊的頁邊指示器,用鼠標(biāo)右鍵單擊這行程序代碼,在快捷菜單上單擊【切換】,然后選擇【斷點】,可以添加斷點。把代碼行設(shè)置為某種斷點顏色,在【格式選項】中可以定義這個顏色。另外,在【調(diào)試】菜單中,單擊【清除所有斷點】可以清除所有斷點。6使用Stop語句Stop語句與斷點相似,只是它直到被刪除之前,一直保留在某段程序中。在程序編譯期間,Stop語句在操作上類似于End語句。亂用Stop語句會造成未知的運行時錯誤。7使用Debug對象的Assert方法使用Debug對象的Assert方法可以按照預(yù)先設(shè)定的條件進(jìn)入中斷模式。這個方法使用布爾表達(dá)式來決定是否進(jìn)入中斷模式。按照“Debug. As

5、sert 布爾表達(dá)式”的語法來應(yīng)用Debug. Assert方法。8使用調(diào)試工具欄當(dāng)程序在用戶認(rèn)為會發(fā)生問題的地方中止時,可以使用Visual Basic提供的擴展調(diào)試工具來檢查問題。調(diào)試工具欄提供了使用最常用的調(diào)試功能的按鈕。如【啟動】、【中斷】、【結(jié)束】、【切換斷點】、【逐語句】、【逐過程】、【跳出】、【本地窗口】、【立即窗口】、【監(jiān)視窗口】、【快速監(jiān)視】、【調(diào)用堆棧】。9監(jiān)視窗口輸入監(jiān)視表達(dá)式可以告訴Visual Basic監(jiān)視哪個變量或表達(dá)式,以及想讓Visual Basic中止程序執(zhí)行的上下文提示或條件。Visual Basic會監(jiān)視用戶選擇的表達(dá)式,當(dāng)程序進(jìn)入中斷模式時,就會告訴用

6、戶它的值。你還可以告訴Visual Basic當(dāng)監(jiān)視表達(dá)式之一為True或其值改變時進(jìn)入中斷模式。如果變量在循環(huán)結(jié)構(gòu)中改變時,這個方法就特別有用。如果與快速監(jiān)視功能結(jié)合使用,監(jiān)視窗口就會成為檢測和修改錯誤的一種高效工具。10添加監(jiān)視表達(dá)式要添加監(jiān)視表達(dá)式,打開【添加監(jiān)視】對話框并指定表達(dá)式、上下文和監(jiān)視類型選項。在【調(diào)試】菜單上,單擊【添加監(jiān)視】,在【表達(dá)式】框中,輸入要判斷的表達(dá)式名稱,在代碼編輯器中添加監(jiān)視表達(dá)式,從代碼編輯器中選擇要監(jiān)視的表達(dá)式。在【添加監(jiān)視】對話框的【上下文】選項組中,設(shè)置一個范圍,Visual Basic會在這個范圍內(nèi)監(jiān)視表達(dá)式的值。在【上下文】選項組中,選擇合適的過

7、程或模塊名稱?!颈O(jiān)視類型】單選框中設(shè)置了Visual Basic響應(yīng)監(jiān)視表達(dá)式的方式。在確定了Visual Basic應(yīng)該響應(yīng)監(jiān)視表達(dá)式的方式之后,在【監(jiān)視類型】單選框中選中一個單選項,然后單擊【確定】。在監(jiān)視窗口中,圖標(biāo)會出現(xiàn)在每個表達(dá)式的左邊,并表明表達(dá)式的類型。11編輯或刪除監(jiān)視表達(dá)式可以編輯或刪除監(jiān)視窗口中列出的任何監(jiān)視表達(dá)式。在監(jiān)視窗口中,選中要編輯的表達(dá)式,在【調(diào)試】菜單上,單擊【編輯監(jiān)視】,或按下控制鍵加W,就會出現(xiàn)【編輯監(jiān)視】對話框,非常方便。這時可以在【編輯監(jiān)視】對話框中修改表達(dá)式、判斷變量的范圍或監(jiān)視類型,然后單擊【確定】。如果希望刪除監(jiān)視表達(dá)式,在監(jiān)視窗口中,選中要刪除的

8、表達(dá)式并按下刪除鍵即可。12使用快速監(jiān)視如果沒有定義監(jiān)視表達(dá)式,而又想查看某個變量、屬性或表達(dá)式的值,可以使用快速監(jiān)視功能。要想繼續(xù)監(jiān)視這個表達(dá)式,可以把它添加到監(jiān)視窗口中。在代碼編輯器中,選擇表達(dá)式,在調(diào)試工具欄上單擊【快速監(jiān)視】按鈕,在【快速監(jiān)視】對話框中,單擊【添加】,就可以把表達(dá)式添加到監(jiān)視窗口中。13從立即窗口中打印輸出要測試表達(dá)式,就要打印輸出它們的值,任何有效的表達(dá)式,包括涉及屬性的表達(dá)式,都可以使用立即窗口來進(jìn)行判斷。在中斷模式下,在立即窗口中直接輸入Print方法,就可以打印輸出到立即窗口。立即窗口的范圍只限制在當(dāng)前過程。在當(dāng)前過程中聲明的局部變量、在當(dāng)前程序代碼模塊中聲明的

9、模塊變量以及全局變量,但不會顯示任何超出范圍的變量或?qū)傩?。?dāng)程序在中斷模式下時,焦點會移動到立即窗口中來檢查數(shù)據(jù)。你可以使用立即窗口來判斷任何有效的表達(dá)式,包括涉及屬性的表達(dá)式。當(dāng)前活動的窗體或模塊決定了范圍。如果程序在屬于窗體或類的程序段暫停,你就可以無須指定窗體或類而引用窗體的屬性或局部變量了。如果程序在另一個模塊或窗體中暫停,你就必須顯式地指明窗體名稱了。問號是一個有用的表示Print方法的速記標(biāo)記。問號與Print含義相同,可以用在使用了Print的任何上下文范圍內(nèi)。在立即窗口中檢查數(shù)據(jù)的方法是在立即窗口中單擊鼠標(biāo)。在語句輸入或粘貼到立即窗口中,然后按下回車鍵,這時立即窗口會執(zhí)行這個語

10、句,并作出響應(yīng)。14使用Debug對象的Print方法Debug對象的Print方法把輸出發(fā)送到立即窗口,不進(jìn)入中斷模式。程序的執(zhí)行不需要為了讓用戶得到應(yīng)用程序運行情況的反饋而中止,返回信息出現(xiàn)在不同的地方,調(diào)試程序作為窗體的一部分保存。使用“Debug. Print 表達(dá)式列表”的語法可以在全速運行情況下跟蹤變量的值。如果忽略表達(dá)式列表,就會打印一條空白行。分號使用列來分開幾個值。當(dāng)應(yīng)用程序被編譯為可執(zhí)行文件時,Debug. Print語句就會被刪除。但是Visual Basic不會刪除作為Debug. Print參數(shù)的函數(shù)調(diào)用。函數(shù)的結(jié)果不會被打印輸出時,函數(shù)的作用也會繼續(xù)在編譯后的可執(zhí)行

11、文件中存在。15立即窗口更廣泛的用途你還能以其它方式來使用立即窗口測試自己的程序。立即窗口可以設(shè)置屬性和變量的值。在排除可能造成錯誤的原因時,有時需要測試特殊數(shù)據(jù)值的影響。立即窗口還可以用來測試過程的結(jié)果。使用立即窗口調(diào)用子過程或函數(shù)過程,可以用任意給定的參數(shù)來測試過程。按下回車鍵以后,Visual Basic會切換到運行模式執(zhí)行依據(jù),然后返回中斷模式。立即窗口還可以用來顯示錯誤消息。可以使用立即窗口來獲得有關(guān)具體錯誤編號的信息。使用立即窗口來顯示錯誤消息的方法是:在立即窗口中輸入錯誤編號,按下回車鍵,這時就會出現(xiàn)相關(guān)錯誤消息。16立即窗口中的快捷方式在輸入語句之后,把插入點放置在這個語句之后

12、,按回車鍵可以再次執(zhí)行它。在按下回車鍵之前,可以編輯當(dāng)前的語句來修改它的作用效果。可以使用鼠標(biāo)或方向鍵在立即窗口中移動。除非在想要執(zhí)行的語句上,否則不要按回車鍵。按下控制鍵加首鍵可以把光標(biāo)移動到立即窗口的頂端,按下控制鍵加尾鍵可以把它移動到底端。按下首鍵可以把光標(biāo)移動到當(dāng)前行的行首,按下尾鍵可以移動到當(dāng)前行的行尾。17使用本地窗口在中斷模式下,可以使用的另一個調(diào)試工具是本地窗口。本地窗口顯示了當(dāng)前過程范圍內(nèi)的所有變量的值。當(dāng)程序的執(zhí)行從一個過程到另一個過程時,本地窗口中的內(nèi)容僅僅反映用于當(dāng)前過程中的變量。本地窗口有四個組成元素:【調(diào)用堆棧】按鈕,表達(dá)式、值和類型。18使用調(diào)用堆棧跟蹤程序流程調(diào)

13、用堆棧功能可以創(chuàng)建一個過程列表,通過幾個活動過程調(diào)來跟蹤程序的流程。活動過程調(diào)用是指應(yīng)用程序中那些已經(jīng)啟動,還沒有結(jié)束的過程,使用這個工具,可以驗證過程執(zhí)行順序是否正確。一個過程可以調(diào)用第二個過程,第二個過程調(diào)用第三個過程,這些調(diào)用都是在第一個過程完成之前開始的。這樣的嵌套過程調(diào)用很難跟蹤。調(diào)用堆??梢燥@示出這種流程。只有程序在中斷模式下才可以顯示調(diào)用堆棧。在調(diào)試工具欄上單擊【調(diào)用堆棧】按鈕,或在中斷模式下按下控制鍵加L,可以調(diào)用調(diào)用堆棧。【調(diào)用堆?!繉υ捒蛄谐隽讼盗星短渍{(diào)用中的所有活動過程調(diào)用,把最早的活動過程調(diào)用放在了列表的底部,后面的過程調(diào)用放在了列表的頂端。為每個過程提供的信息都是以模

14、塊或窗體名稱開頭的,后面是被調(diào)用過程的名稱。因為【調(diào)用堆?!繉υ捒虿⒉槐砻髻x給窗體一個實例的變量,所以它不區(qū)分窗體或類的幾個實例。可以使用【調(diào)用堆?!繉υ捒騺盹@示過程中的語句,這些語句把應(yīng)用程序的控制傳遞給了列表中的下一個過程。在【調(diào)用堆?!繉υ捒蛑羞x中要顯示的過程調(diào)用,單擊【顯示】按鈕,【調(diào)用堆?!繉υ捒蚓蜁P(guān)閉,過程出現(xiàn)在代碼編輯器中,代碼編輯器中的光標(biāo)位置表明了調(diào)用【調(diào)用堆棧】對話框中下一個過程的語句。19在Mouse Down期間中斷執(zhí)行如果在Mouse Down事件過程期間中斷執(zhí)行,則可松開鼠標(biāo)鍵或使用鼠標(biāo)來做別的任務(wù)。但在繼續(xù)執(zhí)行時,應(yīng)用程序會認(rèn)為鼠標(biāo)鍵一直是被按下的。在再次按下鼠

15、標(biāo)鍵并松開它之前不可能獲得Mouse Up事件。在運行時按下鼠標(biāo)鍵,將會認(rèn)為在Mouse Down事件過程中有一個斷點,從而在這里再次中斷執(zhí)行。在這種情況下將再也得不到Mouse Up事件。解決的方法通常是刪除Mouse Down過程中的斷點。20在Key Down期間中斷執(zhí)行如果在Key Down期間中斷執(zhí)行,則可有大致相同的考慮。如果在Key Down過程中保留一個斷點,則可能再也得不到Key Up事件。21在Got Focus或Lost Focus期間中斷執(zhí)行如果在Got Focus或Lost Focus事件過程期間中斷執(zhí)行,則系統(tǒng)消息的計時可能會產(chǎn)生不一致的結(jié)果。要使用Debug. P

16、rint語句代替Got Focus或Lost Focus事件過程中的斷點。22模擬對話框和消息框禁止事件由于調(diào)試器中潛在的沖突問題,當(dāng)顯示一個模擬窗體或消息框時,開發(fā)環(huán)境將不能產(chǎn)生事件。這樣一來,事件就被禁止,直到這個模擬窗體或消息框被釋放為止。重點事件的禁止只發(fā)生在開發(fā)環(huán)境中。一旦項目編譯通過后,即使顯示模擬窗體或消息框時也仍舊會產(chǎn)生事件。一個帶有定時器控件的窗體在開發(fā)環(huán)境中運行,選擇【工具】菜單上的【選項】打開【選項】對話框。這個對話框是模擬對話框。定時器的Timer事件就會被禁止,直到這個對話框被釋放。設(shè)計時,一個帶有定時器控件的用戶控制的實例被放到一個窗體上。選擇【工程】菜單上的【添加

17、類模塊】對話框,這個對話框是模擬對話框。定時器控件的定時器事件會被禁止,直到這個對話框被釋放為止。23測試和使用命令行參數(shù)可以讓應(yīng)用程序使用命令行參數(shù),在啟動時,這些參數(shù)會向應(yīng)用程序提供數(shù)據(jù)。用戶可以選擇操作環(huán)境的【運行】命令來輸入它們,然后在應(yīng)用程序名之后鍵入?yún)?shù)。在創(chuàng)建應(yīng)用程序的圖標(biāo)時也可使用命令行參數(shù)。選擇【工程】菜單里的【屬性】命令,單擊【工程屬性】對話框的【生成】選項卡,在【命令行參數(shù)】文本框中鍵入示例的參數(shù)。選擇【確定】。24在編譯之前刪除調(diào)試信息如果不想在發(fā)布給用戶的應(yīng)用程序中包含調(diào)試信息語句,則在使用【生成.EXE】命令時,用條件編譯來刪除這些語句。因為對Assert過程的調(diào)用

18、是條件編譯的,所以,把f Debug設(shè)置為True,只有可執(zhí)行文件才包含這個調(diào)用。25用斷言檢驗代碼斷言是一種方便的方法,可以測試應(yīng)該在代碼中特定點出現(xiàn)的條件。設(shè)想一個Assert語句如同做一個假設(shè)。如果用戶的假設(shè)是True,將忽略這個斷言,如果你的假設(shè)是False,Visual Basic會產(chǎn)生動作以引起用戶的注意。在Visual Basic中,斷言總是以方法的形式出現(xiàn):Debug對象的Assert方法,需要一個布爾類型參數(shù),這個參數(shù)規(guī)定計算的條件。Debug. Assert語句不會出現(xiàn)在編譯后的應(yīng)用程序中,但是,在設(shè)計環(huán)境中運行時,它會使應(yīng)用程序進(jìn)入中斷模式,并突出顯示包含這條語句的代碼行。26使用請求時編譯請求時編譯和后臺編譯是使應(yīng)用程序在開發(fā)環(huán)境中快速運行的相關(guān)功能。在編譯出整個工程的可執(zhí)行文件之前,

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論