程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python遠程交互式debug

編輯:Python

簡介

在日常開發時,會有一些痛點,常規的方式無法debug,如:

  • 生產環境與測試環境不完全一致,在測試環境,一些場景無法復現

  • 程序日志不夠細致

  • 需要通過交互式調試快速定義問題,並需要嘗試更改變量的值來復現

很明顯,不是特殊時刻,無需考慮遠程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的命令圖。


我是二兩,下篇文章見。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved