Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.
Cách sử dụng Python Debugger với hàm breakpoint()
Trong quá trình phát triển phần mềm, việc gặp lỗi trong mã nguồn là điều không thể tránh khỏi. Để tìm hiểu nguyên nhân và khắc phục, Python cung cấp công cụ gỡ lỗi mạnh mẽ mang tên Python Debugger. Đặc biệt, với hàm breakpoint()
(ra mắt từ Python 3.7), bạn có thể dễ dàng tạm dừng chương trình tại bất kỳ dòng mã nào để kiểm tra trạng thái và thực hiện các thao tác gỡ lỗi chi tiết. Hướng dẫn này sẽ giúp bạn nắm vững cách sử dụng breakpoint()
, từ đó nâng cao hiệu quả phát hiện và sửa lỗi trong mã nguồn của mình.
Tổng quan về Python Debugger và breakpoint()
Khi chương trình của bạn không hoạt động như mong đợi, bạn có thể sử dụng công cụ gỡ lỗi (debugger) để tìm nguyên nhân. Python cung cấp hàm breakpoint()
(bắt đầu từ Python 3.7) để chèn điểm dừng (breakpoint) vào mã, cho phép bạn dừng chương trình tại một dòng cụ thể và bắt đầu phiên gỡ lỗi.
Hàm này tương đương với lệnh cũ:
import pdb; pdb.set_trace()
Cách sử dụng breakpoint()
Ví dụ:
Giả sử bạn có đoạn mã sau:
Bài viết này được đăng tại [free tuts .net]
# my_script.py a = int(0.1) # Giá trị này có thể không như mong đợi b = 3.0 c = a + b breakpoint() # ... Nhiều đoạn mã khác ở đây ...
Khi chạy tập lệnh với lệnh sau:
python my_script.py
Chương trình sẽ dừng tại dòng chứa breakpoint()
và khởi động phiên gỡ lỗi:
--Return-- > my_script.py(6)<module>()->None -> breakpoint() (Pdb)
Tại đây, bạn có thể nhập các lệnh để kiểm tra trạng thái hiện tại của chương trình.
Các lệnh gỡ lỗi phổ biến trong Python Debugger
Dưới đây là danh sách các lệnh hữu ích trong trình gỡ lỗi:
Lệnh | Chức năng |
---|---|
h (help) |
Hiển thị danh sách các lệnh khả dụng. |
l (list) |
Hiển thị mã nguồn của tập tin hiện tại. |
w (where) |
In ra trace của stack, cho biết chương trình đang ở đâu. |
q (quit) |
Thoát khỏi phiên gỡ lỗi. |
**p expression |
Đánh giá biểu thức trong ngữ cảnh hiện tại và in giá trị. |
n (next) |
Chạy đến dòng tiếp theo trong cùng hàm (bỏ qua các hàm con được gọi). |
s (step) |
Chạy từng bước (bao gồm cả bước vào hàm được gọi). |
c (continue) |
Tiếp tục thực thi chương trình cho đến khi gặp breakpoint tiếp theo. |
Gỡ lỗi trong thực tế
Ví dụ gỡ lỗi:
Khi chương trình dừng tại breakpoint()
, bạn có thể sử dụng các lệnh trên để kiểm tra trạng thái:
Kiểm tra giá trị của biến a
và c
:
(Pdb) p a 0 (Pdb) p c 3.0
Xem mã nguồn gần vị trí hiện tại:
(Pdb) l 1 a = int(0.1) 2 b = 3.0 3 c = a + b 4 breakpoint()