MẸO GỠ LỖI VISUAL BASIC CHO ỨNG DỤNG MÃ

Gỡ lỗi là một quá trình mà bạn sử dụng để tìm và giải quyết lỗi hoặc lỗi của Visual Basic cho ứng dụng mã. Có ba loại lỗi mà bạn có thể gặp phải: biên dịch lỗi, lỗi thời gian chạy và logic lỗi. Có thể bạn chưa biết hoặc chưa thành thạo công cụ này. Hãy để Stanford giúp bạn sử dụng nó như một thói quen.

Có một số phương pháp khác nhau mà bạn có thể sử dụng để gỡ lỗi của Visual Basic cho ứng dụng mã. Những ở đây Stanford xin giới thiệu với bạn cách chính sau:.

Bằng cách sử dụng cửa sổ Debug

Bạn có thể sử dụng ô trực tiếp trong cửa sổ gỡ lỗi chạy từng dòng Visual Basic cho ứng dụng mã hoặc kiểm tra giá trị của biến. Trong cửa sổ gỡ lỗi, bạn có thể kiểm tra và gỡ lỗi chức năng và phụ quy trình kiểm tra giá trị của trường, điều khiển, thiết đặt thuộc tính, thay đổi một hoặc một biểu thức; và hiển thị kết quả của một biểu hiện khi chạy các mã. Ví dụ về cách sử dụng cửa sổ gỡ lỗi, hãy làm theo các bước sau: 

  1. Mở mô-đun có chức năng của bạn trong chế độ xem thiết kế.
  2. Trên menu xem, bấm gỡ lỗi cửa sổ.
  3. Do chức năng của bạn trong ngăn cửa sổ gỡ lỗi, ngay lập tức gõ dòng sau và nhấn ENTER:
    ? < FunctionName >)
    vị trí < FunctionName > là một chức năng của bạn. Đảm bảo rằng bạn đặt tất cả các đối số mong muốn của bạn chức năng trong các dấu ngoặc đơn.

Sử dụng cửa sổ gỡ lỗi

Khi bạn tạm ngưng thực hiện Visual Basic cho ứng dụng mã, mã vẫn đang chạy, nhưng tạm dừng giữa chạy báo cáo. Để thực hiện Visual Basic for Applications tạm dừng thực thi mã của bạn, bạn có thể đặt một điểm dừng. Ví dụ: nếu phần đầu của mã chạy đúng, nhưng phần khác không làm theo các bước mẫu để tìm phần không chạy đúng: 

  1. Để đặt một điểm dừng ngay sau khi một phần của mã mà bạn biết hoạt động bình thường, tới điểm chèn dòng đầu tiên của mã mà bạn muốn thiết lập một điểm dừng.
  2. Nhấp vào chuyển đổi điểm dừng trên trình đơn gỡ lỗi (hoặc menu chạy phiên bản 7.0). Dòng xuất hiện trong đậm, chỉ là một tập hợp điểm dừng ở đó.
  3. Chạy chức năng trong cửa sổ gỡ lỗi. Khi thực thi mã chấm điểm dừng, xử lý bị treo và điểm dừng dòng được chọn. Sau đó bạn có thể kiểm tra giá trị của biến trong mã. 

    Ví dụ: để kiểm tra giá trị của một biến gọi là MyName, gõ như sau trong cửa sổ gỡ lỗi, và sau đó nhấn ENTER:
    ?MyName
    Giá trị MyName xuất hiện trong cửa sổ gỡ lỗi. Nếu giá trị chính xác, kiểm tra các biến khác. Nếu giá trị không chính xác, kiểm tra các dòng trước mã để xem nơi biến này được gán một giá trị không đúng.

Sử dụng một điểm dừng ngừng thực thi mã

Bạn có thể xem các kết quả của một biểu hiện trong cửa sổ gỡ lỗi bằng cách nhập phương pháp in đối tượng gỡ lỗi, theo sau biểu. Bạn có thể display cửa sổ gỡ lỗi bất kỳ nơi nào trong Microsoft Access 7.0 hoặc 97 bằng cách nhấn CTRL + G. Bạn có thể sử dụng dấu chấm hỏi (?) là viết tắt cho phương pháp in trong cửa sổ gỡ lỗi. 

Nơi tốt vị trí Debug.Print báo cáo bao gồm: 

  • Đầu chức năng, kiểm tra các đối số thông qua hoạt động. 

    Ví dụ: để kiểm tra giá trị của hai thông qua các chức năng DoSomeCalcs(), đặt lệnh Debug.Print sau mẫu đầu chức năng như sau:
 	Function DoSomeCalcs(Arg1 as Single, Arg2 as Single) 
	Debug.Print "Arguments Passed: " & Arg1 & " and " & Arg2 
	End Function

  • Nếu giá trị của các đối số không đúng, sự cố xảy ra trước khi chạy chức năng. Bạn cũng có thể sử dụng lệnh Debug.Print ở phần đầu của mỗi chức năng nếu bạn có một ứng dụng phức tạp và bạn không chắc chắn có chức năng có thể gây ra sự cố. Điều này cho phép bạn kiểm tra sổ gỡ lỗi xem bộ chức năng được gọi là và xác định xem có chức năng mới.Microsoft Access 97, bạn cũng có thể xem chức năng hoặc chương trình con gọi bằng cách bấm vào nút tạo sổ gỡ lỗi.Trong Microsoft Access 7.0, bạn có thể bấm gọi trên menu công cụ danh sách ngăn xếp cuộc gọi chức năng hiện tại và hiển thị bộ các chức năng được gọi là.
  • Quyết định cấu trúc, kiểm tra rằng bạn đang sử dụng đúng logic cho các chức năng. Ví dụ: mã mẫu sau sử dụng câu lệnh chọn trường hợp để đánh giá giá trị của một biến. Mã cũng sử dụng câu lệnh Debug.Print để xác minh rằng nó làm những gì bạn mong đợi:
 Function DueDate (anyDate) 
	Dim Result as Variant 
	Debug.Print "Function DueDate " & anyDate 
	If Not IsNull(anyDate) Then 
	Result = DateSerial(Year(anyDate), Month(anyDate) + 1, 1) 
	Debug.Print "Result: " & Result 
	Debug.Print "Weekday(Result): " & Weekday(Result) S
	elect Case Weekday(Result) 
		Case 1 'Sunday 
			Debug.Print "Case 1" 
			DueDate = Result + 1 
		Case 7: 'Saturday 
			Debug.Print "Case 7" 
			DueDate = Result + 2 
		Case 6: 'Friday 
			Debug.Print "Case 6" 
			DueDate = Result - 1 
		Case Else 
			Debug.Print "Case Else" 
			DueDate = Result 
		End Select 
		Else 
			DueDate = "Date Missing" 
		End If 
	End Function

  • Chạy chức năng này trong cửa sổ gỡ lỗi bằng cách gõ dòng sau và sau đó nhấn ENTER:
    ?DueDate(#10/1/95#)
    Lưu ý rằng kết quả sau sẽ xuất hiện trong cửa sổ gỡ lỗi:
    Chức năng DueDate 10/1/95
    Kết quả: 11/1/95
    Weekday(result): 2
    Trường hợp khác
    11/1/95
    Các kết quả cho thấy rằng bạn đang sử dụng đúng logic cho chức năng này. Nếu bạn nhận được kết quả khác nhau (không đúng hộp, ví dụ), sau đó bạn có thể kiểm tra giá trị của các biến và biểu thức để xác định sự cố ở đâu.
  • Trong vòng để kiểm tra giá trị của biến. Nếu bạn sử dụng một điểm dừng để kiểm tra giá trị của một biến trong một vòng lặp, bạn không thể xem cách thực hiện một giá trị của các thay đổi khác nhau như vòng lặp. Tuy nhiên, nếu bạn bao gồm tuyên bố Debug.Print MyName trong cấu trúc vòng của bạn, giá trị của biến MyName vẻ trong cửa sổ gỡ lỗi mỗi khi chu kỳ chức năng thông qua vòng. 

    Phương pháp này là một cách tốt để kiểm tra vòng thực hiện số lần bạn mong đợi. Nếu vòng thực hiện bốn lần, bạn sẽ thấy bốn giá trị cho giá trị trong cửa sổ gỡ lỗi.
  • Khi điều khoản, kiểm tra giá trị của tiêu chuẩn trong báo cáo SQL. Ví dụ, hàm mẫu sau tạo ra một dynaset từ một lệnh SQL. Nếu có sự cố trong câu lệnh SQL (như chức năng này), nó có thể khó tìm sự cố. Tuy nhiên, chức năng này sử dụng lệnh Debug.Print để hiển thị các lệnh SQL như Microsoft Access thấy và sử dụng nó:

 Function TestMe() 
	Dim db As Database, rs As Recordset 
	Dim empnum As Long 
	Dim strsql As String 
	Set db = CurrentDb() 
	empnum = 5 
	strsql = "select * from orders where [employeeid]=empnum" 
	Debug.Print strsql Set rs = db.OpenRecordset(strsql) 
End Function

  • Chạy chức năng này trong cửa sổ gỡ lỗi bằng cách gõ dòng sau và sau đó nhấn ENTER:
    ?TestMe()
    Lưu ý rằng kết quả sau đây sẽ xuất hiện:
    chọn * từ đơn đặt hàng nơi [employeeid] = empnum;
    Điều này nơi tình trạng cho thấy [employeeid] = empnum, không [employeeid] = 5, như bạn đã gán nó. Nguyên nhân là rằng empnum biến cần phải tiếp xúc bên ngoài chuỗi SQL. Để khắc phục vấn đề này cụ thể, thay đổi ở đâu có điều kiện để tiếp nhau empnum biến, như sau:

Function TestMe() 
	Dim db As Database, rs As Recordset 
	Dim empnum As Long 
	Dim strsql As String 
	Set db = CurrentDb() 
	empnum = 5 
	strsql = "select * from orders where [employeeid]=" & empnum & ";" 
	Debug.Print 
	strsql Set rs = db.OpenRecordset(strsql) 
End Function 

  • Khi bạn chạy các chức năng chính xác trong cửa sổ Debug, lưu ý rằng các sau tuyên bố xuất hiện:
    chọn * từ đơn đặt hàng nơi [employeeid] = 5;

Sử dụng lệnh Debug.Print

Một biểu hiện xem là một biểu hiện bạn theo dõi trong cửa sổ Debug. Bạn có thể quan sát các giá trị của các biểu thức xem mà bạn chọn trong các xem ngăn. Bạn cũng có thể thực hiện một Watch ngay lập tức nhận ra giá trị của một biểu hiện mà đã không được quy định như là một biểu hiện Watch. Để thêm một xem biểu hiện tới ngăn Watch, làm theo các bước sau:


  1. Mở cửa sổ gỡ lỗi bằng cách nhấn CTRL + G.
  2. Trên trình đơn gỡ lỗi (hoặc trình đơn Tools trong phiên bản 7.0), nhấp Thêm Watch.
  3. Trong hộp biểu hiện, gõ một biến, bất động sản, chức năng gọi, hoặc biểu thức hợp lệ.
  4. Trong bối cảnh hộp, phạm vi của các biểu hiện rằng bạn đang đặt xem bằng cách chọn tên thủ tục và tên mô-đun.
  5. Trong xem loại hộp, bấm vào tùy chọn để xác định như thế nào bạn muốn đánh giá các biểu thức.
Trong Microsoft truy cập 97, bạn có thể thay đổi giá trị của một biến mà bạn đặt một chiếc đồng hồ. Bạn cũng có thể hạn chế phạm vi được sử dụng để xem các biến được xác định cho một thủ tục cụ thể hoặc một mô-đun cụ thể, hoặc trên toàn cầu trong các Mã.

Khi thực hiện mã của bạn bị đình chỉ, bạn có thể bấm nhanh chóng Watch trên trình đơn gỡ lỗi trong Microsoft truy cập 97 để kiểm tra giá trị của một biểu hiện mà đã không được định nghĩa như là một biểu hiện Watch. Bạn cũng có thể chọn một biểu hiện trong mã của bạn và nhấp vào xem nhanh chóng cho nó. (In Microsoft Access 7,0, bạn có thể sử dụng lệnh ngay lập tức xem. Bạn cũng có thể Click vào nút Instant Watch trên thanh công cụ Visual Basic để tạo ra một Xem biểu hiện từ văn bản bạn đã chọn trong cửa sổ Module.)

Bằng cách sử dụng hộp thoại cuộc gọi để truy nguyên thủ tục lồng nhau

Hộp thoại cuộc gọi sẽ hiển thị một danh sách của tất cả các cuộc gọi thủ tục hoạt động. Các cuộc gọi là các thủ tục trong một ứng dụng đang bắt đầu nhưng không hoàn thành. Bạn có thể sử dụng hộp thoại cuộc gọi để theo dõi hoạt động của một ứng dụng như nó chạy một loạt các thủ tục. Bạn có thể xem các cuộc gọi từ cửa sổ gỡ lỗi bằng cách nhấn vào nút xây dựng.

Hộp thoại cuộc gọi danh sách tất cả các cuộc gọi thủ tục hoạt động trong một loạt các cuộc gọi thủ tục lồng nhau. Nó đặt cuộc gọi thủ tục hoạt động sớm nhất ở dưới cùng của danh sách và cho biết thêm các cuộc gọi tiếp theo thủ tục từ đầu.

Bạn có thể sử dụng nút hiển thị trong hộp thoại cuộc gọi để hiển thị các tuyên bố rằng các cuộc gọi thủ tục kế tiếp được liệt kê trong hộp thoại cuộc gọi. Nếu bạn chọn các thủ tục hiện tại trong hộp thoại cuộc gọi và sau đó bấm vào chương trình, Visual Basic cho các ứng dụng sẽ hiển thị các báo cáo hiện nay tại thực hiện mà đã bị đình chỉ.

Sử dụng ngăn người dân địa phương

Người dân địa phương pane trong cửa sổ Debug có ba cột: biểu thức, giá trị, và loại (hoặc bối cảnh trong phiên bản 7.0). Cột biểu bắt đầu với các phân hệ hiện tại (cho một mô-đun chuẩn), hoặc thể hiện tại của một lớp (đối với một mô-đun hạng). Cột biểu hiện tổ chức như một cây thứ bậc của thông tin từ mô-đun hiện tại để hiển thị tất cả các mô-đun cấp biến trong module hiện tại. Các Giá trị cột cho thấy giá trị của các đối tượng hiện tại mô-đun. Bạn có thể thay đổi giá trị của một biến cấp mô-đun trong cửa sổ gỡ lỗi trong Thứ tự để kiểm tra hành vi của các phân hệ của bạn. Cho thấy cột kiểu các loại của đối tượng mô-đun cấp hiện tại.

Kiểm tra giá trị của một biến được chọn trong cửa sổ người dân địa phương có thể rất hữu ích trong việc gỡ lỗi của bạn mô-đun, như có thể thay đổi giá trị của một biến trong người dân địa phương ngăn giá trị cột để quan sát những gì có hiệu lực nó có trên các bộ phận khác của các phân hệ của bạn.

Tags: