Mục lục:
- Trình gỡ rối là gì?
- Thiết lập chương trình của bạn để sử dụng trình gỡ rối
- Để thiết lập một điểm ngắt, chỉ cần bấm vào khu vực phía bên phải của dòng - khu vực này được biết đến trong Mã:: Chặn các mốc như là
- Bạn có thể thiết lập một breakpoint trên dòng kế tiếp và chọn Debug → Start / Continue để tiếp tục thực hiện chương trình tới dòng kế tiếp nếu bạn muốn; tuy nhiên, vì đây là một điều phổ biến để làm, Code :: Blocks cung cấp tùy chọn Debug → Next Line, có nghĩa là "Thực thi chương trình tới dòng tiếp theo."
- Việc đơn bước qua chương trình của bạn là một cách tuyệt vời để cảm thấy chương trình của bạn đang ở đâu nhưng có thể khó hiểu vì sao bạn không thể kiểm tra các biến mà nó sử dụng để đưa ra quyết định. Ví dụ, khi bạn bước một chương trình ví dụ, bạn có thể nhận thấy rằng điều khiển không nhập vòng lặp
- Một mẹo cần nhớ là nó đôi khi có thể gây nhầm lẫn vì tại sao một chương trình bị dừng lại. Không phải tất cả các chương trình đã ngừng hoạt động đều nằm trong sự kiểm soát của trình gỡ lỗi. Đôi khi họ đang chờ đợi đầu vào từ người dùng.
Video: Hướng dẫn kỹ thuật Debug VBA trong Excel 2025
Học cách sử dụng trình gỡ lỗi là một trong những điều quan trọng nhất mà bạn có thể làm để nâng cấp trò chơi C + + của mình. Sau đây là các bước cần thiết để thiết lập một breakpoint, dừng chương trình của bạn, kiểm tra một vài biến, và tiếp tục chương trình.
Vào mùa xuân năm 2014, Mã số:: Các khối không tích hợp với trình sửa lỗi cho máy Mac, vì vậy nếu bạn là người dùng máy Mac, các ví dụ này có thể không phù hợp với bạn.
Trình gỡ rối là gì?
Trước khi đi xa hơn, nó có thể giúp đỡ nếu bạn hiểu những gì một trình sửa lỗi. Trình gỡ lỗi là một chương trình riêng biệt cho phép bạn kiểm soát chương trình thực thi của mình. Cụ thể nó cho phép bạn ngừng thực hiện chương trình tại các dòng mã cụ thể, để kiểm tra giá trị của biến, để thay đổi giá trị của các biến, và để tiếp tục thực hiện chương trình.
Trình gỡ lỗi GNU có một giao diện dòng lệnh rất khó nhớ và rất khó sử dụng (đó là kết hợp chiến thắng nếu bạn từng nghe đến). May mắn thay, Mã số:: Blocks cung cấp một giao diện đồ họa gần như liền mạch với trình gỡ rối GNU. Trong khi bạn nhấp vào cửa sổ trình soạn thảo và kích hoạt các menu thả xuống, Mã:: Các khối gửi các lệnh bí ẩn tới trình gỡ lỗi trong nền và sau đó giải thích và hiển thị đồ họa các kết quả. Nó không phải là tuyệt vời khi hai chương trình chat-chat ở chế độ nền để bạn tiết kiệm công việc?
Cách tốt nhất để tìm hiểu về trình gỡ lỗi là chỉ cần làm theo các ví dụ này.
Thiết lập chương trình của bạn để sử dụng trình gỡ rối
Bạn cần phải xây dựng chương trình bằng cách sử dụng các cài đặt trình biên dịch đặc biệt nếu bạn định chạy nó dưới sự kiểm soát của trình gỡ lỗi. Cách dễ nhất để làm điều này là ngay từ đầu, khi bạn tạo dự án của mình lần đầu tiên. Sau khi bạn đã xác định rằng bạn muốn tạo một ứng dụng Console và cung cấp tên của chương trình, Code:: Blocks sẽ hỏi bạn có muốn xây dựng chương trình của bạn trong cấu hình gỡ lỗi, Release configuration hay cả hai, như thể hiện trong hình 1 Hãy chắc chắn rằng cấu hình gỡ lỗi được kích hoạt.
Một chương trình trong cấu hình Gỡ lỗi bao gồm rất nhiều thông tin bổ sung mà trình gỡ lỗi cần để làm phép thuật của nó. Thông tin này bao gồmĐịa chỉ của mỗi dòng mã nguồn C ++
-
Địa chỉ của mỗi biến
-
Tên và kiểu trang của mỗi lớp trong chương trình
-
Tất cả thông tin trình gỡ rối này thêm rất nhiều chương trình thực thi - hàng trăm kilobyte trở lên. Không gian này là hoàn toàn không cần thiết nếu bạn không có ý định chạy chương trình dưới sự kiểm soát của trình gỡ lỗi, vì vậy Code:: Blocks cung cấp cho bạn tùy chọn xây dựng các file thực thi mà không có thông tin này trong cái được gọi là Release configuration.Các chương trình phát hành nhỏ hơn, tải nhanh hơn và thậm chí thực hiện nhanh hơn.
Nếu bạn kích hoạt cả cấu hình Gỡ lỗi và Giải phóng trong dự án của mình, thì bạn sẽ chọn thời gian xây dựng loại thực thi mà bạn đang cố gắng xây dựng.
Có hai sự khác nhau giữa các cấu hình Gỡ lỗi và Giải phóng:
Cấu hình Gỡ lỗi bao gồm tùy chọn trình biên dịch
-
-g . Tùy chọn này cho trình biên dịch bao gồm thông tin biểu tượng trong tệp thực thi cuối cùng. Đây là tất cả những thứ đã đề cập ở trên - địa chỉ của mỗi dòng mã và của mỗi biến, cũng như mô tả của mọi lớp được sử dụng trong chương trình của bạn.
Trình tối ưu hoá mã được tắt trong cấu hình Gỡ lỗi và được bật trong cấu hình Phát hành.
-
Trình tối ưu hoá mã GNU tạo ra các chương trình chạy nhanh hơn, nhưng nó thực hiện bằng cách di chuyển các hướng dẫn xung quanh bằng những cách có thể gây nhầm lẫn khi bạn gỡ lỗi chương trình của mình. Cấu hình phát hành không bao gồm chuyển đổi
-g và cho phép một số cấp độ tối ưu hóa thông qua việc bao gồm chuyển đổi -O . Hãy chắc chắn rằng bạn đang xây dựng Debug release bằng cách chọn Build → Select Target → Debug, như thể hiện trong hình 2.
Hình 2: Bạn vẫn phải đảm bảo rằng bạn đang xây dựng các file thực thi gỡ lỗi, nếu bạn bật cấu hình Gỡ lỗi khi tạo dự án của mình.
Khôi phục lại chương trình bằng cách chọn Build → Rebuild.Ngừng tại một điểm dừng
Để thiết lập một điểm ngắt, chỉ cần bấm vào khu vực phía bên phải của dòng - khu vực này được biết đến trong Mã:: Chặn các mốc như là
trough. Dòng không chỉ xuất hiện màu khác, chỉ ra rằng trình soạn thảo đã chọn nó, nhưng một dấu hiệu dừng nhỏ xuất hiện trong máng, như thể hiện trong hình 3. Đây là dấu hiệu cho thấy một điểm dừng đã được đặt ở dòng 11 Hình 3: Mã:: Các khối sử dụng một dấu hiệu dừng nhỏ dễ thương để chỉ ra khi một điểm dừng được thiết lập.
Bạn có thể thiết lập nhiều breakpoint như bạn muốn trong một thời gian, nhưng điểm breakpoint này sẽ tốt cho ví dụ này.Ở đây, bạn có thể bắt đầu chương trình bằng cách sử dụng tùy chọn Debug → Start / Continue trong hình 4.
Hình 4: Khởi động (hoặc tiếp tục) thực hiện chương trình bằng cách sử dụng tùy chọn Debug-> Start / Continue.
Chương trình bắt đầu thực hiện như bình thường nhưng dừng gần như ngay lập tức với một mũi tên màu vàng nhỏ chỉ vào dòng 11 như trong Hình 5. Ngoài ra, một cửa sổ trống sẽ thường chứa chương trình xuất xuất hiện. Không có gì xuất hiện trong đầu ra chương trình vì dòng 11 vẫn chưa được thực thi.Hình 5: Việc thực hiện chương trình dừng ngay khi chương trình gặp một breakpoint.
Wow! Đó là mát mẻ.Tiếp tục thực hiện chương trình
Bạn có thể thiết lập một breakpoint trên dòng kế tiếp và chọn Debug → Start / Continue để tiếp tục thực hiện chương trình tới dòng kế tiếp nếu bạn muốn; tuy nhiên, vì đây là một điều phổ biến để làm, Code:: Blocks cung cấp tùy chọn Debug → Next Line, có nghĩa là "Thực thi chương trình tới dòng tiếp theo."
Làm như vậy sẽ làm cho chương trình nhấp nháy trong giây lát khi điều khiển truyền đến chương trình chỉ đủ dài để thực thi dòng 11 trước khi dừng lại, như thể hiện trong hình 6.
Hình 6: Thực hiện các lệnh dòng lệnh Tiếp theo trình gỡ lỗi để thực hiện một dòng trong chương trình.
Bạn có thể lặp lại quá trình này thường xuyên như bạn muốn, có hiệu quả đơn bước theo cách của tôi thông qua chương trình.Khi bạn đến một cuộc gọi chức năng, Next Line vẫn ở chế độ hiện tại, thực hiện toàn bộ chức năng như thể nó chỉ là một dòng (ở mức này). Nếu bạn muốn vượt qua kiểm soát đối với cuộc gọi chức năng, hãy chọn Debug → Step Into thay vào đó. Điều này chỉ làm việc cho các chức năng mà bạn có mã nguồn - điều này không làm việc rất tốt cho các chức năng thư viện C + +.
Bất kỳ lúc nào bạn cảm thấy mệt mỏi với bước đơn lẻ xung quanh, bạn có thể chấm dứt chương trình bằng cách chọn Debug → Stop Debugger. Không chỉ làm điều này ngừng gỡ lỗi, nhưng nó cũng dừng chương trình của bạn.
Xem xét các biến
Việc đơn bước qua chương trình của bạn là một cách tuyệt vời để cảm thấy chương trình của bạn đang ở đâu nhưng có thể khó hiểu vì sao bạn không thể kiểm tra các biến mà nó sử dụng để đưa ra quyết định. Ví dụ, khi bạn bước một chương trình ví dụ, bạn có thể nhận thấy rằng điều khiển không nhập vòng lặp
cho cả. Tại sao vậy? Bạn dừng chương trình bằng cách chọn Debug → Stop Debugger hoặc nhấn Shift + F8 và khởi động lại bằng cách chọn Debug → Start / Continue hoặc nhấn F8. Một bước bằng cách chọn Debug → Next Line hoặc nhấn F7 cho đến khi thực thi bắt đầu từ vòng lặp
cho . Lần này, hãy đảm bảo rằng cửa sổ Xem được hiển thị bằng cách chọn Debug → Debugging windows → Đồng hồ. Một cửa sổ như trong hình 7 xuất hiện cho thấy các giá trị của các đối số và bất kỳ biến địa phương. Lưu ý rằng nNumberofArgs là 1, chỉ cần tên của chính chương trình. Kể từ khi tôi bắt đầu với một giá trị là 1, vòng lặp sẽ không bao giờ được thực hiện. Thêm các biến số xem pszArgs [0] và pszArgs [1] để xem những gì chúng chứa: tên của chương trình và một giá trị null. Aha! Chương trình không có đối số để lặp lại.
Hình 7: Cửa sổ Watch cho phép lập trình viên xem giá trị của các biến.
Bạn có thể thay đổi đối số cho chương trình bằng cách chọn Dự án → Đặt các 'Lập luận của Chương trình. Trong cửa sổ này, bạn có thể đặt bất cứ đối số nào bạn muốn.Lưu ý rằng cửa sổ Watch hiển thị cho tôi tên của biến, kiểu và giá trị của nó. Bạn không thể thay đổi loại của nó, nhưng bạn có thể thay đổi giá trị của nó từ cửa sổ này, nếu bạn muốn. Thay đổi giá trị của
nNumberofArgs không phải là rất hữu ích, nhưng đôi khi thay đổi giá trị của một biến cho phép tôi thực hiện việc thực hiện xuống một con đường khác nhau chỉ để xem những gì có thể xảy ra. Tiếp tục một chương trình đã dừng
Một mẹo cần nhớ là nó đôi khi có thể gây nhầm lẫn vì tại sao một chương trình bị dừng lại. Không phải tất cả các chương trình đã ngừng hoạt động đều nằm trong sự kiểm soát của trình gỡ lỗi. Đôi khi họ đang chờ đợi đầu vào từ người dùng.
Để xem hiệu ứng này, chỉ cần một bước chương trình PrintArgs cho đến khi kiểm soát đến dòng 26.Khi bạn chọn Next Line, con trỏ biến mất như thể hiện trong hình 8. Đi qua là mũi tên màu vàng dễ chịu nhắc nhở bạn về nơi bạn đang ở trong chương trình. Chuyện gì đã xảy ra?
Hình 8: Điều khiển dường như biến mất khi chương trình đang chờ người dùng nhập vào.
Điều gì đã xảy ra là chương trình đang đợi tôi nhấn Enter trên bàn phím. Trước tiên, bạn phải chọn cửa sổ chương trình. Sau đó, bạn có thể nhấn Enter (bạn có thể cần phải làm điều này nhiều lần). Đã làm điều đó, dường như không có gì xảy ra trong cửa sổ chương trình bởi vì kiểm soát bây giờ đã được chuyển trở lại trình gỡ lỗi trong cửa sổ Code:: Blocks. Khi bạn chọn lại cửa sổ đó, bạn sẽ thấy mũi tên màu vàng trấn an nói với tôi rằng Mã số:: Các khối đang trở lại trong sự kiểm soát.Khi bạn đang thực hiện chương trình của bạn dưới trình gỡ rối và kiểm soát dường như chỉ mất đi, chương trình có thể đang chờ nhập dữ liệu từ bàn phím. Chuyển sang cửa sổ chương trình để xem liệu đó là trường hợp. Nếu có, ngay khi bạn nhập một cái gì đó, điều khiển sẽ trở lại trình gỡ lỗi.