Tôi không thể tìm thấy bất kỳ thông tin nào về gỡ lỗi ứng dụng web python, đặc biệt là bước qua việc thực hiện yêu cầu web.Làm cách nào để tôi duyệt qua/gỡ lỗi ứng dụng web python?
là điều này không thể? nếu không, tại sao không?
Tôi không thể tìm thấy bất kỳ thông tin nào về gỡ lỗi ứng dụng web python, đặc biệt là bước qua việc thực hiện yêu cầu web.Làm cách nào để tôi duyệt qua/gỡ lỗi ứng dụng web python?
là điều này không thể? nếu không, tại sao không?
Nếu bạn đặt
import pdb
pdb.set_trace()
trong mã của bạn, ứng dụng web sẽ giảm xuống còn một phiên debugger pdb khi thực hiện set_trace
.
Cũng hữu ích, là
import code
code.interact(local=locals())
mà giọt bạn đến thông dịch viên python. Nhấn Ctrl-d sẽ tiếp tục thực hiện.
Tuy nhiên hữu ích hơn, là
import IPython.Shell
ipshell = IPython.Shell.IPShellEmbed()
ipshell(local_ns=locals())
mà giọt bạn thành một phiên IPython (giả sử bạn đã cài đặt IPython). Tại đây, nhấn Ctrl-d tiếp tục thực hiện.
sử dụng Python Debbuger, import pdb; pdb.set_trace()
chính xác nơi bạn muốn bắt đầu gỡ lỗi và thiết bị đầu cuối của bạn sẽ tạm dừng trong dòng đó. Thông tin thêm ở đây: http://plone.org/documentation/kb/using-pdb
Nếu bạn đang chạy ứng dụng web của bạn thông qua apache và mod_wsgi hay mod_python, cả hai cung cấp một số hỗ trợ cho bước qua gỡ lỗi với pdb. Bí quyết là bạn phải chạy apache ở chế độ nền trước với cờ -X.
Trên hệ thống Gentoo của tôi, tôi làm điều này với (điều này chủ yếu là lệnh cùng một kịch bản apache init sử dụng thay thế cho -k bắt đầu với -X):
/usr/sbin/apache2 -D DEFAULT_VHOST -D INFO -D LANGUAGE -D SSL -D SSL_DEFAULT_VHOST -D PYTHON -d /usr/lib64/apache2 -f /etc/apache2/httpd.conf -X
Bạn cũng có thể cần bật tùy chọn PythonEnablePdb như được ghi trong tài liệu modpython tại đây - http://modpython.org/live/current/doc-html/directives.html#pythonenablepdb – Guruprasad
Làm thế nào bạn có đang chạy các ứng dụng web? – Mark