Debugger là một trong những phần mềm mà phần lớn, nếu không muốn nói là tất cả các developer đã từng sử dụng ít nhất một lần trong cuộc đời lập trình của mình. Tuy nhiên, không thực sự nhiều người thực sự hiểu hết về công cụ này. Cùng giải đáp về debugger và cách debugger hoạt động trong bài sau.
Giải nghĩa debugger là gì?
Để giải thích ngắn gọn, debugger là một phần mềm được sử dụng để kiểm tra và phát hiện lỗi (bug) trong các chương trình trên máy tính. Một debugger còn được gọi là công cụ gỡ lỗi.
Các debugger có thể sử dụng các trình hướng dẫn mô phỏng, thay vì trực tiếp chạy chương trình trên bộ vi xử lý để đạt mức kiểm soát thực thi cao hơn. Nhờ vậy mà các debugger có thể dừng hoặc tạm dừng chương trình tùy vào từng trường hợp cụ thể. Tuy nhiên, sử dụng trình mô phỏng sẽ làm giảm tốc độ thực thi.
Khi một chương trình bị treo, debugger sẽ hiển thị vị trí xảy ra lỗi trong chương trình đó. Hầu hết các debugger cũng có thể chạy chương trình theo trình tự bước một, ngoài việc dừng tại các điểm lỗi. Debugger cũng thường thực hiện sửa đổi trạng thái của các chương trình trong khi đang chạy.
>> Tham khảo thêm: Kiến thức căn bản về Bug và Report Bug
Dùng Python debugger để chữa lỗi code

Khi chữa lỗi, sử dụng python sẽ cung cấp thêm cho bạn một số tiện ích khác. Bạn không chỉ có thể xem được code trong quá trình xử lý mà còn chạy được code trong dòng lệnh debugger hoặc thậm chí tác động đến quy trình khi thay đổi giá trị biến.
>> Tìm hiểu thêm: Python là gì? Tại sao lại chọn Python?
Python còn sở hữu một loại vũ khí hết sức lợi hại, đó chính là debugger tích hợp sẵn có tên gọi là `pdb` với giao diện dòng lệnh đơn giản vô cùng hữu ích. Pdb là một tiện ích đơn giản cung cấp tất cả các tính năng debug cơ bản bạn có thể cần đến. Tuy nhiên, nếu bạn cần khả năng xử lý phức tạp hơn, bạn có thể mở rộng pdb với ipdb cung cấp thêm một số tính năng debugger bổ sung từ IPython.
Cách sử dụng dễ nhất là bạn gọi `pdb` trong code đang làm việc ra.
import pdb; pdb.set_trace()
Bạn chạy trình thông dịch, và khi chạy đến dòng này, bạn sẽ nhận được một dấu nhắc lệnh trên giao diện chương trình đang sử dụng. Về cơ bản, đây là một lời nhắc chung trong Python, tuy nhiên nó cung cấp thêm một số lệnh mới.
List (l)
Lệnh list (l) sử dụng để xem trình thông dịch Python đang nằm trên dòng code nào. Bạn có thể sử dụng lệnh này để kiểm tra một khoảng code khác – các đối số sẽ được thể hiện trong dòng đầu tiên và dòng cuối cùng. Nhưng nếu bạn chỉ cung cấp số dòng đầu tiên, bạn sẽ chỉ thấy code chạy xung quanh dòng cụ thể này.
up(p) and down(d)
Lệnh sử dụng để điều hướng thông qua các call stack. Bạn có thể xem được ai đang gọi hàm hiện hành, hoặc tại sao trình thông dịch lại được thực hiện như vậy.
step(s) and next(n)
Một cặp lệnh quan trọng khác là step(s) and next(n). Bạn có thể tiếp tục chạy các ứng dụng theo dòng với cặp lệnh này. Sự khác biệt duy nhất là lệnh next(n) sẽ chỉ đưa bạn đến dòng tiếp theo trong hàm hiện hành, ngay cả khi một hàm khác đang được gọi, nhưng step(s) sẽ đưa bạn đến với các dòng sâu hơn trong hàm với các trường hợp như thế này.
break(b)
Nếu bạn cần thiết lập các breakpoint mới mà không cần phải thay đổi mã, bạn có thể sử dụng lệnh break (b).
Bảng câu lệnh cơ bản dùng trong Python debugger:
Lệnh | Lệnh viết tắt | Nhiệm vụ |
args | a | In danh sách đối số của hàm hiện tại |
break | b | Tạo breakpoint (yêu cầu tham số) trong khi chạy chương trình |
continue | c or cont | Tiếp tục chạy chương trình |
help | h | Cung cấp danh sách lệnh hoặc hỗ trợ một lệnh xác định |
jump | j | Đặt lệnh chạy cho dòng tiếp theo |
list | l | In mã nguồn quanh dòng hiện tại |
next | n | Tiếp tục chạy cho đến khi đạt hoặc trả về dòng tiếp theo trong hàm hiện tại |
step | s | Chạy dòng hiện tại, dừng lại ở lần đầu tiên |
pp | pp | Pretty-prints giá trị của biểu thức |
quit or exit | q | Hủy bỏ chương trình |
return | r | Tiếp tục chạy cho đến khi hàm trả về hiện tại |
Am hiểu và thực hành tốt một số lệnh cơ bản trên đây, bạn có thể thực hiện các thao tác fix lỗi code nhanh với python debugger.
Nguồn: Tech.vccloud.vn
>> Có thể bạn quan tâm: Vòng đời của Bug bạn phải hiểu