在日常開發時,會有一些痛點,常規的方式無法debug,如:
生產環境與測試環境不完全一致,在測試環境,一些場景無法復現
程序日志不夠細致
需要通過交互式調試快速定義問題,並需要嘗試更改變量的值來復現
很明顯,不是特殊時刻,無需考慮遠程debug的形式。
PyCharm提供遠程debug,但比較重,這裡我們通過remote-pdb(https://github.com/ionelmc/python-remote-pdb)來實現遠程debug。
首先了解一下remote-pdb,日常我們開發py時,會使用pdb進行調試,但pdb不提供遠程調試的功能,開發者基於pdb開發了pdbx,pdbx可以將pdb調試信息通過telnet或nc命令傳遞,從而實現遠程調試的效果,remote-pdb在pdbx之上,再封裝了一層,使用起來會更加方便。
安裝remote-pdb
pip install remote-pdb
我們通過Python寫一段斐波那契數列的代碼:
from remote_pdb import RemotePdb
rpdb = RemotePdb('127.0.0.1', 6666)
def fib(n):
a,b = 1,1
for i in range(n-1):
a,b = b,a+b
# 斷點
rpdb.set_trace()
return a
print (fib(10))
上述代碼中,引入了remote_pdb中的RemotePdb類並實例化出了rpdb,後續我們可以通過telnet或nc命令來鏈接RemotePdb提供的TCP服務。
這裡我們選擇telnet,如果你是windows系統,你需要開啟以前telnet服務,在windows設置裡,找到【啟動或關閉windows功能】,然後在裡面找到telnet相關的東西,將其開啟就好了。
運行下了斷點的程序,然後通過【telnet 127.0.0.1 6666】 去連接,就會進入屬性的pdb交互式環境,然後便可以通過pdb中的命令來查詢程序中的信息了,如下圖:
非常簡單的技巧,最後貼一張PDB的命令圖。
我是二兩,下篇文章見。