Tải bản đầy đủ (.pdf) (8 trang)

Hướng dẫn những thao tác cơ bản khi gỡ rối (debug) một chương trình trong môi trường Visual Studio pps

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (240.42 KB, 8 trang )



Hướng dẫn những thao
tác cơ bản khi gỡ rối
(debug) một chương
trình trong môi trường
Visual Studio.
Để học được một ngôn ngữ lập trình, đối với những người mới bắt đầu, điều
đặc biệt cần thiết là phải biết cách "gỡ rối" (debug) chương trình. Bài viết
này sẽ cố gắng giúp những người mới bắt đầu biết cách làm sao để làm điều
này một cách hiệu quả trong môi trường Visual Studio.
"Chạy" chương trình
Có thể hiểu nôm na, một chương trình sẽ chạy bắt đầu từ dòng lệnh đầu tiên
sau dấu { của hàm main và sẽ chấm dứt sau khi thực hiện xong lệnh cuối
cùng trước dấu } của hàm main. Trong quá trình chạy, có thể có những đoạn
đường "thẳng", những đoạn đường "rẽ" (lệnh rẽ nhánh như if, switch),
những đoạn đường vòng (lệnh lặp như while, do while, ), những đoạn
đường nhỏ hơn (hàm).
Điểm dừng chương trình (breakpoint)
Như vậy, để có thể gỡ rối được chương trình, trước tiên phải biết được "đoạn
rối" của nó, tức chương trình bị lỗi ở đoạn nào. Visual Studio (cũng như hầu
hết các IDE khác) đều cho phép lập trình viên "tạm dừng" chương trình hay
cho chương trình "chạy từ từ" tại một số đoạn nào đó. Vị trí mà chúng ta
muốn chương trình "tạm dừng" để chúng ta có thể xem cho kỹ "cục rối" như
thế nào (để mà gỡ) và có thể cho nó "chạy từ từ" để xem kỹ từng múi rối
(xem giá trị các biến và mã xử lý chúng) được gọi là điểm dừng chương
trình hay breakpoint. Từ bây giờ sẽ gọi breakpoint cho tiện.
Cửa sổ Locals, cửa sổ Watch
Hai cửa sổ là nơi mà ta có thể xem giá trị các biến khi ta đang debug chương
trình đang. Tuy nhiên, cửa sổ Locals là nơi chứatất cả các biến trong phạm
vi hiện tại còn cửa sổ Watch là nơi ta có thể xem bất kỳ biết nào, biểu thức


nào hay xem bất kỳ kiểu nào ta mong muốn.
B. Làm việc với Breakpoint
Tạo một breakpoint
Thực hiện 1 trong 3 cách sau:
Cách 1: Di chuyển con nháy đến hàng tương ứng sau đó
chọn Debug → Toggle Breakpoint
Cách 2: Di chuyển con nháy đến hàng tương ứng sau đó nhấn phím F9
Cách 3: Kích chuột vào cột mốc tại hàng tương ứng
Nếu thao tác thành công, tại hàng tương ứng trong cột mốc sẽ có một nút
tròn màu đỏ như trong hàng 42 và 48 của hình 1.

Hình 1

Hủy một breakpoint
Để hủy 1 breakpoint, bạn chỉ việc thực hiện thao tác như khi tạo 1
breakpoint ở trên.
Quản lý danh sách breakpoint
Bạn có thể mở cửa sổ Breakpoints để quản lý các breakpoint đang có bằng
cách: chọn Debug → Windows → Breakpoints (hình 2). Cửa sổ Breakpoints
sẽ hiện ra như ở hình 1.

Hình 2
Kích hoạt/thôi kích hoạt các breakpoint
Trong cửa sổ Breakpoints, ô chọn phía trái của mỗi breakpoint chính là
thông tin breakpoint hiện tại có được kích hoạt hay không. Nếu không được
kích hoạt thì chương trình sẽ "không dừng" tại breakpoint này (coi như nó
không tồn tại).
Có thể kích vào ô chọn này để kích hoạt hay thôi kích hoạt các breakpoint.
Nếu muốn kích hoạt hay thôi kích hoạt tất cả các breakpoint, kích vào biểu
tượng .

Hủy cùng lúc nhiều breakpoint
Trong cửa sổ Breakpoints, bạn có thể:
 Xóa cùng lúc nhiều breakpoint bằng cách đè phím Ctrl và kích chuột
lên các breakpoint tương ứng sau đó kích vào nút .
 Xóa tất cả các breakpoint bằng cách kích vào nút
Tạo điểm dừng có điều kiện (conditional breakpoint)
Thông thường, chương trình sẽ dừng tại hàng nào có đặt breakpoint. Tuy
nhiên, nếu hàng này nằm trong một vòng lặp (một hàm đệ quy) và chúng ta
lại chỉ muốn chương trình sẽ dừng tại hàng này trong một vòng lặp (hay một
lần gọi đệ quy) cụ thể nào đó thì có 2 cách để làm được điều này:
1. Tạo 1 breakpoint tại hàng muốn dừng sau đó cứ nhấn F5 cho đến khi
chương trình chạy đến vòng lặp (hay lần gọi đệ quy) mong muốn. Cách này
rất mất công, ví dụ nếu ta muốn dừng tại vòng lặp thứ 99 thì phải nhấn F5 ít
nhất 98 lần.
2. (tiện lợi hơn) Tạo 1 breakpoint tại hàng muốn dừng sau đó kích phải
tại breakpoint này và chọn Condition (hình 3). Cửa sổ Breakpoint Condition
xuất hiện (hình 3), sau đó bạn chỉ việc nhập điều kiện vào vùng condition.
Như ví dụ trong hình 3, tôi muốn chương trình dừng khi i=5 và j=3.

Hình 3
C. Xem giá trị các biến khi debug
Cửa sổ Locals
Để mở cửa sổ Locals, bạn nhấn tổ hợp phím Ctrl+D,L (đè phím Ctrl,
gõ D sau đó gõ tiếp L) hoặc chọn Debug → Windows →Locals (xem hình 4)

Hình 4
Cửa sổ Watch
Để mở cửa sổ Locals, bạn nhấn tổ hợp phím Ctrl+D,W (đè phím Ctrl,
gõ D sau đó gõ tiếp W) hoặc chọn Debug → Windows →Watch → Watch
1 (xem hình 4). Một chú ý là có đến 4 cửa sổ Watch nên trường hợp có quá

nhiều biến cần theo dõi thì có thể mở tiếp một số cửa sổ Watch còn lại để
xem.
D. Cho chương trình "chạy từ từ"
Chạy từng lệnh
Cách tiện nhất để chạy từng lệnh là sử dụng phím nóng. Có hai hình thức
chạy từng lệnh:
1. Chạy lướt qua hàm (nhấn phím F10 hoặc chọn Debug → Step Over):
nếu dòng hiện tại có lời gọi đến một nào nào đó trong chương trình thì nó sẽ
"lướt" qua hàm này, nghĩa là nó sẽ "chạy nhanh" qua chứ không đi vào để
chạy từng lệnh trong hàm này.
2. Đi vào hàm (nhấn phím F11 hoặc chọn Debug → Step Into): nếu dòng
hiện tại có lời gọi đến một nào nào đó trong chương trình thì nó sẽ đi vào để
chạy từng lệnh trong hàm này.
Ta dễ thấy rằng, trường hợp dòng hiện tại mà chương trình đang đứng không
chứa lời gọi đến một hàm nào khác thì nhấn phímF10 hay F11 là như nhau.
Chạy nhanh ra khỏi hàm
Trường hợp muốn chạy nhanh ra khỏi hàm mà chương trình đang dừng lại,
chỉ đơn giản nhấn tổ hợp phím Shift+F11 (đè phímShift và gõ phím F11)
hoặc chọn Debug → Step Out.
Dừng chương trình
Khi đang debug chương trình, muốn sửa gì đó trong mã nguồn hay không
muốn chạy tiếp nữa thì bạn nhấn Shift+F5 (đè phímShift và gõ phím F5)
hoặc chọn Debug → Stop Debugging để dừng chương trình.
E. Một số phím nóng cần nhớ
F5 bắt đầu "chạy" chương trình F10 ch
ạy từng lệnh (l
Shift+F5 dừng chương trình F11 ch
ạy từng lệnh (đi v
F9 tạo/hủy một breakpoint Shift+F11 ch
ạy nhanh ra khỏi h


×