Skip to content

Các mánh debug code Python phổ biến và hiệu quả

Spread the love

Dưới đây là các mánh debug code Python phổ biến và hiệu quả:

Sử dụng print() thông minh:

  • In giá trị của biến tại các điểm quan trọng trong code để kiểm tra luồng dữ liệu.
  • Thêm thông tin ngữ cảnh, ví dụ: print(f"Biến x tại dòng 10: {x}").
  • Dùng pprint từ module pprint để in cấu trúc dữ liệu phức tạp (list, dict) rõ ràng hơn.

Dùng assert để kiểm tra giả định:

  • Thêm câu lệnh assert điều_kiện, "thông báo lỗi" để kiểm tra các điều kiện phải đúng.
  • Ví dụ: assert len(my_list) > 0, "Danh sách rỗng!".

Sử dụng debugger tích hợp (PDB):

  • Thêm import pdb; pdb.set_trace() tại điểm muốn debug để tạm dừng chương trình.
  • Dùng các lệnh như n (next), s (step), c (continue), p biến (in giá trị biến).
  • Python 3.7+ hỗ trợ breakpoint() thay cho pdb.set_trace().

Dùng IDE với debugger:

  • Các IDE như PyCharm, VS Code, hoặc Jupyter Notebook có giao diện debug trực quan.
  • Đặt breakpoint, theo dõi giá trị biến, và kiểm tra stack trace dễ dàng.

Kiểm tra lỗi với try-except:

  • Bọc code nghi vấn trong try-except để bắt và in thông tin lỗi chi tiết.
  • Ví dụ:
    python try: result = risky_operation() except Exception as e: print(f"Lỗi: {e}")

Sử dụng logging thay vì print:

  • Dùng module logging để ghi log với các mức độ (DEBUG, INFO, WARNING, ERROR).
  • Ví dụ:
    python import logging logging.basicConfig(level=logging.DEBUG) logging.debug("Giá trị biến x: %s", x)

Kiểm tra kiểu dữ liệu và giá trị:

  • Dùng type(biến)isinstance(biến, Kiểu) để kiểm tra kiểu dữ liệu.
  • Dùng id(biến) để kiểm tra xem hai biến có trỏ cùng một đối tượng không.

Sử dụng công cụ linting:

  • Dùng flake8, pylint, hoặc mypy để phát hiện lỗi cú pháp, lỗi logic tiềm ẩn, hoặc vấn đề về kiểu dữ liệu trước khi chạy.

Kiểm tra code từng phần:

  • Tách code thành các hàm nhỏ, dễ kiểm tra.
  • Dùng unit test (module unittest hoặc pytest) để kiểm tra từng hàm riêng lẻ.

Sử dụng công cụ debug bên ngoài:
PySnooper: Thêm decorator @pysnooper.snoop() để tự động log toàn bộ giá trị biến trong hàm.
ipdb: Phiên bản nâng cấp của pdb, cài bằng pip install ipdb.
tracemalloc: Theo dõi bộ nhớ, hữu ích khi tìm memory leak.

Kiểm tra lỗi phổ biến:
Index out of range: Kiểm tra độ dài danh sách/tuple trước khi truy cập.
KeyError: Dùng dict.get(key, default) để tránh lỗi key không tồn tại.
TypeError: Đảm bảo kiểu dữ liệu phù hợp trước khi thực hiện phép toán.

Dùng REPL hoặc Jupyter Notebook:
– Thử nghiệm đoạn code nhỏ trong Python REPL hoặc Jupyter để kiểm tra nhanh logic.

Mẹo bổ sung:

  • Đọc kỹ thông báo lỗi (traceback) để xác định dòng và loại lỗi.
  • Tìm kiếm thông báo lỗi trên Google hoặc Stack Overflow, nhưng kiểm chứng trước khi áp dụng.
  • Viết code đơn giản, rõ ràng để giảm thiểu lỗi từ đầu.

Leave a Reply

Your email address will not be published. Required fields are marked *

error: Content is protected !!