Khi học lập trình chắc hẳn có rất nhiều bạn gặp phải vấn đề là code chạy nhưng không ra kết quả không như mong muốn nhỉ??? Để giải quyết vấn đề này thì các bạn thường chạy lại code trong đầu hoặc viết ra giấy mà quên đi mất công cụ hữu ích là debug được tích hợp sẵn trong các IDE. Vậy hôm nay mình xin được hướng dẫn các bạn cách debug trong DevC++.
Xác định vấn đề
Debug (gỡ rối) là quá trình tìm ra lỗi khiến chương trình máy tính hay hệ thống không hoạt động đúng.
Đầu tiên chúng ta cần phải xác định được DevC++ của bạn đang là 32bit hay là 64bit, sau khi xác định được ta chọn bản 64bit-Debug hoặc 32bit-Debug
Tiếp tới ta nhìn các chỉ số đánh line code, và nhấn chọn điểm bắt đầu chạy (breakpoint), ví dụ dưới đây mình chọn line 4 minh họa cho cả bài viết:
Bước tiếp theo ta nhìn xuống dưới chọn debug (hoặc nhấn F5) để mở cửa sổ quản lí Debug
Mình xin được giải thích từng chức năng chính như sau:
- Debug: nhấn để bắt đầu quá trình debug
- Add watch: có chức năng là thêm các biến hoặc các biểu thức mà chúng ta muốn theo dõi trong suốt quá trình chúng thay đổi ra sao.
- Có 2 cách để thêm là
- Cách 1: nhấn add watch sẽ hiện ra 1 dòng để cho ta nhập biến và biểu thức
- Cách 2: các bạn có thể bôi đen biến hoặc biểu thức rồi nhấn add watch
- Sau khi thêm các bạn chọn cửa sổ debug như sau để theo rõi giá trị của biến được add watch
- Ở đây mình add các biến và biểu thức: n, n<2, i, sqrt(n), i<=sqrt(n), n%i==0.
- Có 2 cách để thêm là
- Next line: Nhảy dòng tiếp theo, chúng ta cần phải đặc biệt lưu ý ở chức năng này vì nó nhảy tới dòng tiếp theo nên khi chúng ta vô tình code dòng 8 9 10 gộp vào 1 dòng thì nó sẽ nhảy luôn xuống dòng tiếp theo mà không lặp đi lặp lại quá trình của vòng for nữa.
- Stop execution: dừng quá trình debug
- Into function: có chức năng truy cập vào hàm, ví dụ nếu mình đặt ví trí breakpoint ở dòng cout<<snt(17); thì khi nhấn into function ta sẽ truy cập vào được hàm số nguyên tố, nếu không ta nhấn next line nó sẽ nhảy luôn xuống dòng dưới mà không truy cập vào hàm kiểm tra số nguyên tố.
- Skip function: Thoát khỏi hàm đang chạy. (Ngược lại với into function)
Sau khi nắm rõ được các chức năng của từng button trong debug rồi, và ở trên mình cũng đã add các biến và biểu thức mà chúng ta cần theo rõi quá trình debug, giờ chúng ta chỉ cần nhấn next next và next để theo rõi sự thay đổi của các biến và biểu thức qua từng lệnh được thực thi. Khi chúng ta theo dõi quá trình thay đổi của các biến và biểu thức như thế thì sẽ biết được mình sai ở đâu, từ đó có thể tìm được hướng giải quyết.
Tổng kết
Debug là một khâu rất quan trọng mà mỗi lập trình viên đều phải biết, đặc biệt là các bạn newbie khi học C++ hay bất kì ngôn ngữ nào khác cũng nên tìm hiểu cách debug mà IDE có sẵn để một phần giảm tải việc chạy code trong đầu, ra giấy cũng như không hiểu code của mình chạy được nhưng mà sai ở đâu.
Ở trên mình đã trình bày cụ thể các debug trong DevC++, các bạn chỉ cần nhớ chọn cho đúng bản chạy là 64bit-debug || 32bit-debug nếu chọn sai thì khi debug nó sẽ thoát khỏi DevC++. Và tiếp tới là xác định các biến + các biểu thức có thể ảnh hưởng tới kết quả bài toán để add watch và đừng quên mở tap Debug để xem kết quả thay đổi của chúng sau mỗi lần nhấn next nhé!! Các bạn cũng nên chú ý ở những câu lệnh nhập dữ liệu từ bàn phím vì khi trỏ tới câu lệnh nhập ta phải tap qua màn hình console để nhập dữ liệu và đồng thời sau mỗi câu lệnh in nó cũng sẽ in ở màn hình console.