Quá trình bình thường cho việc phát triển các chương trình máy tính là một cái gì đó như thế này: viết một số mã, biên dịch mã, chạy chương trình. Nếu chương trình không hoạt động như mong đợi, sau đó bạn quay trở lại mã để tìm lỗi (lỗi) và lặp lại chu trình một lần nữa.

Tùy thuộc vào độ phức tạp của chương trình và tính chất của các lỗi, có những lúc bạn có thể thực hiện với một số trợ giúp bổ sung trong việc theo dõi lỗi. Đây là một "trình gỡ lỗi". Nó cho phép bạn kiểm tra một chương trình máy tính trong khi nó đang chạy. Bạn có thể thấy các giá trị của các biến khác nhau, bạn có thể kiểm tra nội dung của bộ nhớ và bạn có thể tạm dừng chương trình tại một điểm xác định và bước qua mã một dòng tại một thời điểm.

Trình gỡ rối chính trên Linux là trình gỡ lỗi GNU (gdb). Nó có thể đã được cài đặt trên hệ thống của bạn (hoặc một phiên bản rút gọn được gọi là gdb-minimal), nhưng để chắc chắn gõ lệnh sau vào terminal:

 sudo apt-get cài đặt gdb 

Để sử dụng trình gỡ rối, bạn cần báo cho trình biên dịch bao gồm thông tin gỡ lỗi trong tệp nhị phân. Tạo một tệp có tên “hello10.c” bằng nano:

 nano hello10.c 

Sao chép và dán vào mã sau:

 #include main () {int i; cho (i = 0; i <10; i ++) printf ("% d", i); } 

Cờ "-g" báo cho trình biên dịch tạo ra thông tin gỡ lỗi, do đó, để biên dịch việc sử dụng chương trình:

 gcc -g -o hello10 hello10.c 

Để bắt đầu gỡ lỗi kiểu chương trình:

 gdb hello10 

Tại thời điểm này nếu bạn chỉ mới bắt đầu chạy chương trình (sử dụng lệnh "run"), thì chương trình sẽ thực hiện và kết thúc trước khi bạn có cơ hội làm bất cứ điều gì. Để ngăn chặn điều đó, bạn cần phải tạo một "breakpoint" để dừng chương trình tại một điểm xác định. Cách dễ nhất để làm điều này là để cho trình gỡ rối dừng lại trong hàm "main ()":

 phá vỡ chính 

Bây giờ bắt đầu chương trình:

 chạy 

Trình gỡ rối đã dừng lại ở dòng mã thực thi đầu tiên, ví dụ: vòng lặp "for". Để chuyển sang dòng tiếp theo, hãy nhập "tiếp theo" hoặc "n" để viết tắt. Tiếp tục sử dụng "tiếp theo" để lặp lại vòng lặp một vài lần:

Để kiểm tra giá trị của một biến sử dụng lệnh "print". Trong chương trình ví dụ của chúng ta, chúng ta có thể kiểm tra nội dung của biến "i":

 in tôi 

Lặp lại vòng lặp và vài lần nữa và xem cách "i" thay đổi:

 tiếp theo tiếp theo tiếp theo 

Trong ví dụ trên "i" đã đạt đến giá trị của 4. Vòng lặp sẽ tiếp tục trong khi "i" nhỏ hơn 10. Bạn có thể thay đổi giá trị của biến bằng cách sử dụng "set var". Nhập nội dung sau vào gdb để đặt "i" thành 10.

 đặt var i = 10 print i next 

Bạn có thể cần phải thực hiện "tiếp theo" (tùy thuộc vào nơi chương trình bị tạm dừng khi bạn đặt "i" thành 10), nhưng khi đường vòng "for" được thực hiện tiếp theo, vòng lặp sẽ thoát, vì "i" không có dài hơn 10.

Lệnh "tiếp theo" không đi sâu vào các hàm mà đúng hơn là hàm được thực thi và trình gỡ rối dừng lại ở dòng tiếp theo sau hàm. Nếu bạn muốn bước vào một hàm, hãy sử dụng lệnh "step" hoặc "s" cho ngắn.

Một cách khác để gỡ lỗi chương trình của bạn là đặt đồng hồ trên một biến. Điều này làm dừng chương trình bất cứ khi nào biến thay đổi. Khởi động lại chương trình bằng cách gõ "run". Kể từ khi chương trình đã chạy, trình gỡ lỗi sẽ hỏi bạn có muốn bắt đầu lại từ đầu.

Chương trình sẽ dừng lại ở chính (vì chúng tôi đã không xóa điểm ngắt). Bây giờ, hãy đặt đồng hồ trên "i":

 xem tôi tiếp tục 

Lệnh "tiếp tục" bắt đầu chương trình chạy lại cho đến khi điều kiện điểm ngắt tiếp theo. Trong trường hợp này, nó sẽ chạy lại cho đến khi biến "i" thay đổi (do đồng hồ).

Để ngừng gỡ lỗi, chỉ cần sử dụng lệnh "thoát".

Nếu bạn muốn tìm hiểu thêm về gdb, thì một nơi tốt để bắt đầu là Tài liệu GDB. Nếu bạn gặp rắc rối với các ví dụ được nêu ở trên, vui lòng sử dụng phần bình luận bên dưới và chúng tôi sẽ xem chúng tôi có thể trợ giúp không.