310 likes | 472 Vues
Visual Basic 程式設計. 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所. 第十七章 程式的除錯. 錯誤分類. 編譯時期錯誤 (Compile errors) 執行時期錯誤 (Run-time errors) 邏輯錯誤 (Logic errors). Compile errors. 沒有按照 VB 語法的規定會引發語法錯誤 打錯關鍵字 漏打標點符號 結構寫錯 …………………. Compile errors(cont’d). Auto Syntax Check( 語法檢查 )
E N D
Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所
錯誤分類 • 編譯時期錯誤(Compile errors) • 執行時期錯誤(Run-time errors) • 邏輯錯誤(Logic errors)
Compile errors • 沒有按照VB語法的規定會引發語法錯誤 • 打錯關鍵字 • 漏打標點符號 • 結構寫錯 • …………………..
Compile errors(cont’d) • Auto Syntax Check(語法檢查) • 選 Tools 功能表的 Options 命令。 • 選取 Editor 標籤頁。 • 勾選或清除 Auto Syntax Check 選項。
Compile errors(cont’d) • Require Variable Declaration(強制變數宣告) • 選 Tools 功能表的 Options 命令。 • 選取 Editor 標籤頁。 • 勾選或清除 Require Variable Declaration選項。
Compile errors(cont’d) • Combine “Auto Syntax Check” and “Require Variable Declaration” 變數名字大小寫兼具
Run-time errors • 當程式執行時發生意外的狀況錯誤,導致程式無法繼續執行的錯誤 • 取用無法使用的物件 • 試圖讀取不存在的檔案 • 執行除以0的運算 • ………………..
Logical errors • 程式執行沒有得到預期的結果 • 最不容易發現 • 借助VB提供的除錯工具追蹤並檢視程式執行的結果,才能找出錯誤所在
Visual Basic 的三種模式 • Design(設計) 製作畫面,加程式碼 • Run(執行) 程式執行 • Break(中斷) 除錯
What can we do in “Break” mode • 當VB進入中斷模式後,你就能夠: • 修改應用程式的程式碼。 • 知道現在正在執行那一個程序。 • 檢視及改變變數或屬性的內容值。 • 改變程式執行的流程。 • 執行VB的敘述或程序。
How to get into “Break” mode • 碰到設定的中斷點 • 碰到 Stop 敘述 • 以F8或Shift-F8啟動程式執行 • 按下 Ctrl+Break 組合鍵,或是工具列中的 Break 鈕
How to get into “Break” mode(cont’d) • 應用程式發生執行時期的錯誤,按下 Debug 鍵 • 放在 Debug.Assert 敘述後面的運算式運算的結果是 False
設定中斷點 • 使用Toggle Breakpoint命令 • 按下 F9鍵 • 使用滑鼠的左鍵點中欲設定中斷點的程式碼的 Margin Indicator區 Ctrl+Shift+F9 Clear all breakpoints
使用Stop敘述 • 可以隨著程式碼一起儲存起來 • 製成EXE之後不會失效 Sub cmdSubmit_OnClick() 'Enter Break mode Stop End Sub
使用Debug.Assert方法 • 接在Debug.Assert 後面的運算式運算的結果是False便中斷 • 製成EXE之後就會完全失效 Private Sub cmdCount_Click() Dim intCounter As Integer For intCounter = 1 To 10 Debug.Assert intCounter < 5 Next End Sub
使用Debug工具列 • 使用滑鼠的右鍵點中工具列上空曠的地方,再選擇 Debug 命令
追蹤程式方法 • 逐行(Step Into) F8 • 逐程式(Step Over) Shift-F8 • 跳出(Step Out) Ctrl-Shift-F8 • 執行至游標處(Run to Cursor) Ctrl-F8
追蹤程式方法(cont’d) • 設定下個執行點 (Set Next Statement) Ctrl-F9 • 顯示下個執行點 (Show Next Statement)
使用Watch視窗 • 使用Watch視窗在程式進入中斷模式時,檢視變數的內容值或運算式的結果 • Debug/Add Watch • Debug/Edit Watch
使用Quick Watch • 想在VB進入中斷模式時監視並未加到Watch視窗的變數、屬性或運算式 • Debug/Quick Watch
使用Immediate視窗 • 利用Immediate視窗呼叫程序、計算運算式、或是改變屬性或變數的值 • 用來顯示錯誤訊息
把資料列印到Immediate視窗 • 在Immediate視窗中使用 Print 方法 • 在應用程式中使用 Debug.Print 方法 Print BackColor ? BackColor
使用 Debug.Print • 不用中斷程式的執行,就可以檢視欲檢視的變數、屬性或運算式 • 不會影響使用者輸出的畫面 • Debug.Print 方法會和專案的程式碼儲存在一起 Debug.Print "Salary = " & curSalary
Immediate視窗的進階用法 • 改變屬性或變數的內容值 • 測試程序的結果 frmMain.BackColor = 255 intMaxRows = 50 dblResult = Quadratic(2, 8, 8)
Immediate視窗的進階用法(cont’d) • 在Immediate視窗中取得錯誤代碼所代表的含意 • 可以輸入任何運算除了不接受宣告 error 58
使用Local視窗 • 觀察目前執行的程序可以看得到的變數 • View/Locals Window
使用Call Stack視窗 • 存放已經被呼叫,但是還沒有執行結束的所有程序 • View/Call Stack • Function A Function B Function C
除錯基本程序 • 在可疑的地方設中斷點 • 在過程中順便把可疑的變數加入監看視窗 • 修改可疑之處,在測試之~~
Error • On ErrorGoToline • On ErrorResume Next • On ErrorGoTo0