Visual Basic 程式設計
-
Upload
simon-mckenzie -
Category
Documents
-
view
52 -
download
1
description
Transcript of Visual Basic 程式設計
![Page 2: Visual Basic 程式設計](https://reader035.fdocuments.net/reader035/viewer/2022081503/56812a88550346895d8e24e3/html5/thumbnails/2.jpg)
第十七章 程式的除錯
![Page 3: Visual Basic 程式設計](https://reader035.fdocuments.net/reader035/viewer/2022081503/56812a88550346895d8e24e3/html5/thumbnails/3.jpg)
錯誤分類
編譯時期錯誤 (Compile errors)執行時期錯誤 (Run-time errors)邏輯錯誤 (Logic errors)
![Page 4: Visual Basic 程式設計](https://reader035.fdocuments.net/reader035/viewer/2022081503/56812a88550346895d8e24e3/html5/thumbnails/4.jpg)
![Page 5: Visual Basic 程式設計](https://reader035.fdocuments.net/reader035/viewer/2022081503/56812a88550346895d8e24e3/html5/thumbnails/5.jpg)
Compile errors
沒有按照 VB 語法的規定會引發語法錯誤 打錯關鍵字 漏打標點符號 結構寫錯 …………………..
![Page 6: Visual Basic 程式設計](https://reader035.fdocuments.net/reader035/viewer/2022081503/56812a88550346895d8e24e3/html5/thumbnails/6.jpg)
Compile errors(cont’d)
Auto Syntax Check( 語法檢查 )1. 選 Tools 功能表的 Options 命令。2. 選取 Editor 標籤頁。3. 勾選或清除 Auto Syntax Check 選項。
![Page 7: Visual Basic 程式設計](https://reader035.fdocuments.net/reader035/viewer/2022081503/56812a88550346895d8e24e3/html5/thumbnails/7.jpg)
Compile errors(cont’d)
Require Variable Declaration( 強制變數宣告 )
1. 選 Tools 功能表的 Options 命令。2. 選取 Editor 標籤頁。3. 勾選或清除 Require Variable Declaratio
n 選項。
![Page 8: Visual Basic 程式設計](https://reader035.fdocuments.net/reader035/viewer/2022081503/56812a88550346895d8e24e3/html5/thumbnails/8.jpg)
Compile errors(cont’d)
Combine “Auto Syntax Check” and “Require Variable Declaration”
變數名字大小寫兼具
![Page 9: Visual Basic 程式設計](https://reader035.fdocuments.net/reader035/viewer/2022081503/56812a88550346895d8e24e3/html5/thumbnails/9.jpg)
Run-time errors
當程式執行時發生意外的狀況錯誤,導致程式無法繼續執行的錯誤 取用無法使用的物件 試圖讀取不存在的檔案 執行除以 0 的運算 ………………..
![Page 10: Visual Basic 程式設計](https://reader035.fdocuments.net/reader035/viewer/2022081503/56812a88550346895d8e24e3/html5/thumbnails/10.jpg)
Logical errors
程式執行沒有得到預期的結果最不容易發現 借助 VB 提供的除錯工具追蹤並檢視程式執行的結果,才能找出錯誤所在
![Page 11: Visual Basic 程式設計](https://reader035.fdocuments.net/reader035/viewer/2022081503/56812a88550346895d8e24e3/html5/thumbnails/11.jpg)
Visual Basic 的三種模式
Design( 設計 ) 製作畫面 , 加程式碼
Run( 執行 ) 程式執行
Break( 中斷 ) 除錯
![Page 12: Visual Basic 程式設計](https://reader035.fdocuments.net/reader035/viewer/2022081503/56812a88550346895d8e24e3/html5/thumbnails/12.jpg)
What can we do in “Break” mode
當 VB 進入中斷模式後,你就能夠: 修改應用程式的程式碼。 知道現在正在執行那一個程序。 檢視及改變變數或屬性的內容值。 改變程式執行的流程。 執行 VB 的敘述或程序。
![Page 13: Visual Basic 程式設計](https://reader035.fdocuments.net/reader035/viewer/2022081503/56812a88550346895d8e24e3/html5/thumbnails/13.jpg)
How to get into “Break” mode
碰到設定的中斷點碰到 Stop 敘述以 F8 或 Shift-F8 啟動程式執行按下 Ctrl+Break 組合鍵,或是工具列中的 Break 鈕
![Page 14: Visual Basic 程式設計](https://reader035.fdocuments.net/reader035/viewer/2022081503/56812a88550346895d8e24e3/html5/thumbnails/14.jpg)
How to get into “Break” mode(cont’d)
應用程式發生執行時期的錯誤,按下 Debug 鍵放在 Debug.Assert 敘述後面的運算式運算的結果是 False
![Page 15: Visual Basic 程式設計](https://reader035.fdocuments.net/reader035/viewer/2022081503/56812a88550346895d8e24e3/html5/thumbnails/15.jpg)
設定中斷點
使用 Toggle Breakpoint 命令按下 F9 鍵使用滑鼠的左鍵點中欲設定中斷點的程式碼的 Margin Indicator 區
Ctrl+Shift+F9 Clear all breakpoints
![Page 16: Visual Basic 程式設計](https://reader035.fdocuments.net/reader035/viewer/2022081503/56812a88550346895d8e24e3/html5/thumbnails/16.jpg)
使用 Stop 敘述
可以隨著程式碼一起儲存起來 製成 EXE 之後不會失效
Sub cmdSubmit_OnClick()
'Enter Break mode
Stop
End Sub
![Page 17: Visual Basic 程式設計](https://reader035.fdocuments.net/reader035/viewer/2022081503/56812a88550346895d8e24e3/html5/thumbnails/17.jpg)
使用 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
![Page 18: Visual Basic 程式設計](https://reader035.fdocuments.net/reader035/viewer/2022081503/56812a88550346895d8e24e3/html5/thumbnails/18.jpg)
使用 Debug 工具列
使用滑鼠的右鍵點中工具列上空曠的地方,再選擇 Debug 命令
![Page 19: Visual Basic 程式設計](https://reader035.fdocuments.net/reader035/viewer/2022081503/56812a88550346895d8e24e3/html5/thumbnails/19.jpg)
追蹤程式方法
逐行 (Step Into) F8逐程式 (Step Over) Shift-F8跳出 (Step Out) Ctrl-Shift-F8執行至游標處 (Run to Cursor) Ctrl-F8
![Page 20: Visual Basic 程式設計](https://reader035.fdocuments.net/reader035/viewer/2022081503/56812a88550346895d8e24e3/html5/thumbnails/20.jpg)
追蹤程式方法 (cont’d)
設定下個執行點 (Set Next Statement) Ctrl-F9顯示下個執行點 (Show Next Statement)
![Page 21: Visual Basic 程式設計](https://reader035.fdocuments.net/reader035/viewer/2022081503/56812a88550346895d8e24e3/html5/thumbnails/21.jpg)
使用 Watch 視窗
使用 Watch 視窗在程式進入中斷模式時,檢視變數的內容值或運算式的結果 Debug/Add WatchDebug/Edit Watch
![Page 22: Visual Basic 程式設計](https://reader035.fdocuments.net/reader035/viewer/2022081503/56812a88550346895d8e24e3/html5/thumbnails/22.jpg)
使用 Quick Watch
想在 VB 進入中斷模式時監視並未加到Watch 視窗的變數、屬性或運算式Debug/Quick Watch
![Page 23: Visual Basic 程式設計](https://reader035.fdocuments.net/reader035/viewer/2022081503/56812a88550346895d8e24e3/html5/thumbnails/23.jpg)
使用 Immediate 視窗
利用 Immediate 視窗呼叫程序、計算運算式、或是改變屬性或變數的值 用來顯示錯誤訊息
![Page 24: Visual Basic 程式設計](https://reader035.fdocuments.net/reader035/viewer/2022081503/56812a88550346895d8e24e3/html5/thumbnails/24.jpg)
把資料列印到 Immediate 視窗
在 Immediate 視窗中使用 Print 方法在應用程式中使用 Debug.Print 方法
Print BackColor
? BackColor
![Page 25: Visual Basic 程式設計](https://reader035.fdocuments.net/reader035/viewer/2022081503/56812a88550346895d8e24e3/html5/thumbnails/25.jpg)
使用 Debug.Print
不用中斷程式的執行,就可以檢視欲檢視的變數、屬性或運算式不會影響使用者輸出的畫面 Debug.Print 方法會和專案的程式碼儲存在一起
Debug.Print "Salary = " & curSalary
![Page 26: Visual Basic 程式設計](https://reader035.fdocuments.net/reader035/viewer/2022081503/56812a88550346895d8e24e3/html5/thumbnails/26.jpg)
Immediate 視窗的進階用法
改變屬性或變數的內容值
測試程序的結果
frmMain.BackColor = 255
intMaxRows = 50
dblResult = Quadratic(2, 8, 8)
![Page 27: Visual Basic 程式設計](https://reader035.fdocuments.net/reader035/viewer/2022081503/56812a88550346895d8e24e3/html5/thumbnails/27.jpg)
Immediate 視窗的進階用法 (cont’d)
在 Immediate 視窗中取得錯誤代碼所代表的含意
可以輸入任何運算除了不接受宣告
error 58
![Page 28: Visual Basic 程式設計](https://reader035.fdocuments.net/reader035/viewer/2022081503/56812a88550346895d8e24e3/html5/thumbnails/28.jpg)
使用 Local 視窗
觀察目前執行的程序可以看得到的變數View/Locals Window
![Page 29: Visual Basic 程式設計](https://reader035.fdocuments.net/reader035/viewer/2022081503/56812a88550346895d8e24e3/html5/thumbnails/29.jpg)
使用 Call Stack 視窗
存放已經被呼叫,但是還沒有執行結束的所有程序 View/Call StackFunction A Function B Function C
![Page 30: Visual Basic 程式設計](https://reader035.fdocuments.net/reader035/viewer/2022081503/56812a88550346895d8e24e3/html5/thumbnails/30.jpg)
除錯基本程序
在可疑的地方設中斷點在過程中順便把可疑的變數加入監看視窗修改可疑之處,在測試之 ~~
![Page 31: Visual Basic 程式設計](https://reader035.fdocuments.net/reader035/viewer/2022081503/56812a88550346895d8e24e3/html5/thumbnails/31.jpg)
Error
On Error GoTo line On Error Resume NextOn Error GoTo 0