10.1 Bắt đầu Debugger
Mình sẽ học về quy trình debug dựa trên IntelliJ IDEA, nó khá là hợp lý và thú vị. Giờ bạn sẽ thấy điều này.
Trong IntelliJ IDEA (cần bản Ultimate Edition) có thể chạy chương trình của bạn bằng hai chế độ:
| Các chế độ chạy chương trình | Biểu tượng trên thanh công cụ | Phím tắt |
|---|---|---|
| Chạy bình thường | ![]() |
Shift+F10 |
| Chạy ở chế độ debug | ![]() |
Shift+F9 |
Với chế độ chạy bình thường, bạn đã quen thuộc: chương trình sẽ chạy, thực hiện và kết thúc. Nhưng chế độ debug sẽ mang đến nhiều điều thú vị.
Chế độ debug
Chế độ debug cho phép bạn thực hiện từng bước cả chương trình của mình. Hay đúng hơn là, từng dòng: dòng này đến dòng khác. Trong lúc này, bạn có thể xem giá trị của các biến ở từng bước của chương trình (sau khi thực hiện mỗi dòng mã). Thậm chí là thay đổi giá trị của chúng!
Để nắm vững nghệ thuật debug chương trình, bạn cần học ba điều:
- Điểm dừng (Breakpoint)
- Thực hiện từng bước
- Xem giá trị của biến
10.2 Điểm dừng (Break Points)
IDE cho phép bạn đặt trong mã những điểm dừng đặc biệt — điểm dừng (break point). Mỗi khi chương trình chạy đến dòng có gắn break point, nó sẽ tạm dừng.
Để đặt break point tại một dòng nhất định, bạn chỉ cần nhấp chuột trái vào bên trái của dòng đó trong IntelliJ IDEA. Ví dụ:
Kết quả là dòng sẽ được đánh dấu bằng một điểm dừng (break point), và IntelliJ IDEA sẽ làm nổi bật toàn bộ dòng bằng màu đỏ:
Nhấp chuột lại một lần nữa vào bên trái mã sẽ loại bỏ điểm dừng break point đã đặt.
Ngoài ra, bạn cũng có thể đặt break point trên dòng hiện tại bằng cách sử dụng tổ hợp phím — Ctrl+F8. Nhấn lại Ctrl+F8 trên dòng đã có break point sẽ xóa nó.
10.3 Chạy chương trình ở chế độ debug
Nếu chương trình của bạn có ít nhất một điểm dừng, bạn có thể chạy chương trình ở chế độ debug (Shift+F9 hoặc "biểu tượng con bọ").
Sau khi chạy ở chế độ debug, chương trình thực hiện như thường. Nhưng ngay khi đạt tới dòng mã có đánh dấu break point, nó sẽ dừng lại. Ví dụ:
Phần trên của ảnh chụp màn hình bạn thấy mã chương trình với hai điểm dừng. Chương trình dừng tại dòng 2 — được đánh dấu bằng một đường màu xanh. Dòng 2 chưa thực hiện: chưa có gì được in ra console.
Phần dưới của màn hình bạn thấy các bảng điều khiển của chế độ debug: bảng Thread & variables, bảng Console (in ra màn hình), và tập hợp các nút cho chế độ debug.
Bạn có thể tiếp tục chương trình của mình (tiếp tục thực hiện) bằng cách nhấn nút Resume Program trên bảng điều khiển bên trái phía dưới (hoặc nhấn phím F9).
Nếu nhấp vào nút đó (hoặc F9), chương trình sẽ tiếp tục thực hiện cho đến khi gặp điểm dừng tiếp theo hoặc kết thúc. Đây là những gì ta thấy sau khi nhấn nút đó:
Chương trình dừng ở điểm dừng thứ hai, và trong console đã xuất hiện các từ Hello và and – dấu hiệu cho thấy trong ba dòng mã chỉ có hai dòng đã thực hiện.
10.4 Thực hiện từng bước
Nếu chương trình của bạn chạy ở chế độ debug, bạn cũng có thể thực hiện từng bước nó: một bước — một dòng. Có hai phím tắt cho thực hiện từng bước: F7 và F8 — mỗi phím sẽ thực hiện dòng mã hiện tại. Nhưng trước tiên, bạn cần dừng chương trình bằng cách đặt break point.
Nếu bạn muốn thực hiện từng dòng của chương trình, bạn cần đặt break point ở đầu dòng đầu tiên có mã và chạy nó ở chế độ debug.
Khi chương trình dừng, bạn có thể bắt đầu thực hiện từng dòng của nó. Một lần nhấn phím F8 — một dòng.
Đây là cách chương trình của mình trông như sau khi dừng và nhấn phím F8 một lần:
Dòng đầu tiên — print("Hello") đã thực hiện, và dòng hiện tại — dòng thứ hai. Bạn cũng có thể thấy ở phần dưới của ảnh, từ Hello đã được in ra màn hình.
10.5. Thực hiện từng bước và vào hàm
Nếu bạn có các hàm riêng trong chương trình, và bạn muốn khi debug chương trình không chỉ thực hiện từng bước mà còn vào từng hàm của bạn, thì để "vào hàm" bạn cần nhấn phím F7 thay vì F8.
Giả sử bạn đang thực hiện từng bước chương trình và hiện đang dừng ở dòng 5. Nếu bạn nhấn F8, Intellij IDEA sẽ chỉ thực hiện dòng thứ năm và chuyển sang dòng thứ sáu:
Nhưng nếu bạn nhấn F7, Intellij IDEA sẽ thực hiện từng bước hàm hello():
Mọi thứ rất đơn giản. Nếu bạn không quá quan tâm đến những gì diễn ra bên trong phương thức, bạn nhấn F8; nếu quan tâm — F7 và thực hiện từng dòng mã của nó.


GO TO FULL VERSION