Hướng dẫn how do i debug python in terminal? - làm cách nào để gỡ lỗi python trong thiết bị đầu cuối?

Nội dung

Hướng dẫn how do i debug python in terminal? - làm cách nào để gỡ lỗi python trong thiết bị đầu cuối?

Khi tôi sử dụng Pycharm một thời gian trước đây, tôi đã quen với việc gỡ lỗi mã của mình với trình gỡ lỗi GUI tích hợp của nó, hoạt động rất tốt. Nhưng khi tôi viết mã trên máy chủ mà không có hỗ trợ X11, tôi buộc phải sử dụng Neovim để phát triển Python. Việc gỡ lỗi của tôi bị giảm xuống thành một câu lệnh print trong mã nguồn. Nó hoạt động tốt cho các chương trình đơn giản. Khi mã nguồn của tôi trở nên đủ dài hoặc đủ phức tạp, việc thêm từng người một chỉ là không hiệu quả khi chỉ chơi với một đối tượng.

Cuối cùng, tôi quyết định dùng thử. Trong bài viết này, tôi giới thiệu ba người gỡ lỗi.

PDB

Python tàu với một trình gỡ lỗi bản địa có tên là PDB.

Bạn có thể gỡ lỗi mã của mình bằng cách xâm nhập hoặc cách không xâm nhập. Đối với cách xâm nhập, bạn cần sửa đổi mã nguồn của mình:

import pdb

# put the following statement where you want the code to stop and step to pdb
pdb.set_trace()

Cá nhân, tôi thích cách không xâm phạm để xâm nhập PDB. Bạn có thể chạy PDB dưới dạng mô -đun:

python -m pdb your_script.py

Nó sẽ bắt đầu gỡ lỗi mã của bạn từ đầu mã.

Các lệnh chung

PDB cung cấp một vài lệnh để giúp bạn gỡ lỗi mã của mình trên giao diện Interacitve của nó. Ở đây, tôi liệt kê một số lệnh và ý nghĩa của chúng:

  • n: Thực hiện dòng tiếp theo
  • p: In giá trị của một đối tượng
  • s: Bước vào một hàm
  • python -m pdb your_script.py
    
    0: trở về từ một hàm
  • python -m pdb your_script.py
    
    1: Đặt điểm dừng ở dòng
    python -m pdb your_script.py
    
    2
  • python -m pdb your_script.py
    
    3: Tiếp tục chạy mã cho đến khi đáp ứng điểm ngắt
  • python -m pdb your_script.py
    
    4: Chạy mã cho đến khi dòng
    python -m pdb your_script.py
    
    2
  • python -m pdb your_script.py
    
    6: In loại đối tượng (tương tự như
    python -m pdb your_script.py
    
    7)
  • python -m pdb your_script.py
    
    8: Liệt kê bối cảnh của dòng hiện tại (11 dòng mặc định)
  • python -m pdb your_script.py
    
    9: Hiển thị tin nhắn trợ giúp
  • import rlcompleter
    import pdb
    
    pdb.Pdb.complete=rlcompleter.Completer(locals()).complete
    
    0: Thoát trình gỡ lỗi

Cách bật tự động hoàn thành

Theo mặc định, PDB không cung cấp tự động hoàn thành cho các tên biến và phương thức đối tượng. Để bật tự động hoàn thành, hãy tạo tệp

import rlcompleter
import pdb

pdb.Pdb.complete=rlcompleter.Completer(locals()).complete
1 trong thư mục nhà của bạn với các cài đặt sau:HOME directory with the following settings:

import rlcompleter
import pdb

pdb.Pdb.complete=rlcompleter.Completer(locals()).complete

IPDB

IPDB giống như PDB, nhưng với tự động hoàn thành tích hợp, làm nổi bật cú pháp và nhiều lệnh hơn. Bạn có thể cài đặt nó với PIP:

Việc sử dụng của nó tương tự như PDB, vì vậy tôi sẽ không lãng phí thời gian ở đây. Một điều đáng chú ý là IPDB thêm lệnh

import rlcompleter
import pdb

pdb.Pdb.complete=rlcompleter.Completer(locals()).complete
2:

sticky [start end]

Toggle sticky mode. When in sticky mode, it clear the screen
and longlist the current functions, making the source
appearing always in the same position. Useful to follow the
flow control of a function when doing step-by-step execution.

If ``start`` and ``end`` are given, sticky mode is enabled and
only lines within that range (extremes included) will be
displayed.

Điều đó có nghĩa là trong chế độ Stick, hàm hiện tại sẽ được hiển thị và dòng hiện tại sẽ được tô sáng để làm cho việc bạn thực hiện chương trình dễ dàng hơn.

Hướng dẫn how do i debug python in terminal? - làm cách nào để gỡ lỗi python trong thiết bị đầu cuối?

pudb

Một trình gỡ lỗi đầu cuối đáng để thử là PUDB. Đầu tiên, cài đặt nó với PIP:

Để gọi nó, bạn có thể sử dụng

python -m pudb my_script.py

hoặc đơn giản

PUDB tạo ra một giao diện giống như GUI để gỡ lỗi mã của bạn. Nó sẽ hiển thị mã của bạn, biến hiện tại, dấu vết ngăn xếp, điểm ngắt và cửa sổ thiết bị đầu cuối trong giao diện đầu cuối của nó.

Hướng dẫn how do i debug python in terminal? - làm cách nào để gỡ lỗi python trong thiết bị đầu cuối?

Bạn có thể sử dụng

import rlcompleter
import pdb

pdb.Pdb.complete=rlcompleter.Completer(locals()).complete
3 và
import rlcompleter
import pdb

pdb.Pdb.complete=rlcompleter.Completer(locals()).complete
4 để di chuyển đường thẳng lên và xuống và sử dụng
import rlcompleter
import pdb

pdb.Pdb.complete=rlcompleter.Completer(locals()).complete
5 để đặt điểm ngắt, sẽ được tô sáng màu đỏ. Để thực thi dòng mã tiếp theo, sử dụng n. Để chạy mã cho đến khi một điểm ngắt, sử dụng
python -m pdb your_script.py
3. Để sử dụng nhiều hơn, nhấn
python -m pdb your_script.py
9.

Nhìn chung, nó khá mạnh mẽ, xem xét rằng nó được thực hiện trong một thiết bị đầu cuối.

Sự kết luận

Trong bài đăng này, tôi đã giới thiệu ba trình gỡ lỗi Python - PDB, IPDB và PUDB. Cả hai có thể giúp chúng tôi gỡ lỗi mã. Cá nhân, tôi nghĩ PUDB là thứ đẹp nhất mà tôi muốn sử dụng.

Người giới thiệu

  • Bật tự động hoàn thành cho PDB.
  • Các cuộc thảo luận về trình gỡ lỗi Python
  • Một danh sách các trình gỡ lỗi Python.

Hình ảnh tiêu đề được chụp từ đây

AuthorJdhao jdhao

LastMod 2021-10-16 2021-10-16

LicensEcc BY-NC-ND 4.0 CC BY-NC-ND 4.0

Bạn có thể gỡ lỗi từ thiết bị đầu cuối?

Để xem thông tin gỡ lỗi trên bảng điều khiển, hãy thực hiện các tác vụ sau: Thực hiện lệnh gỡ lỗi thiết bị đầu cuối. Trung tâm thông tin (được bật theo mặc định). Sử dụng lệnh gỡ lỗi để cho phép gỡ lỗi liên quan.Execute the terminal debugging command. Enable the information center (enabled by default). Use a debugging command to enable the related debugging.

Làm cách nào để gỡ lỗi một quá trình Python?

Sử dụng từ xa-PDB..
Xác định vị trí nguồn cho dịch vụ đang chạy.Nguồn giống như dưới /usr/lib/python2.7/site-packages/.Sau khi định vị, hãy mở tệp quan tâm và thêm các dòng sau để đặt điểm dừng: ....
Khởi động lại dịch vụ: Systemctl khởi động lại.

Chúng ta có thể gỡ lỗi mã Python không?

Thực hiện câu lệnh (được đưa ra dưới dạng chuỗi hoặc đối tượng mã) trong Điều khiển trình gỡ lỗi.Lời nhắc trình gỡ lỗi xuất hiện trước khi bất kỳ mã nào được thực thi;Bạn có thể đặt các điểm dừng và nhập tiếp tục hoặc bạn có thể bước qua câu lệnh bằng bước hoặc tiếp theo (tất cả các lệnh này được giải thích bên dưới).

Làm cách nào để kích hoạt gỡ lỗi trong Python?

Trình gỡ lỗi được bật theo mặc định khi máy chủ phát triển được chạy ở chế độ gỡ lỗi.Khi chạy từ mã Python, Pass Debug = true cho phép chế độ gỡ lỗi, chủ yếu là tương đương.Giao diện máy chủ và dòng lệnh phát triển có nhiều thông tin hơn về việc chạy chế độ gỡ lỗi và gỡ lỗi.passing debug=True enables debug mode, which is mostly equivalent. Development Server and Command Line Interface have more information about running the debugger and debug mode.