1. 程式人生 > >PUDB除錯python程式

PUDB除錯python程式

其特點主要有:
- 原始碼語法高亮,棧、斷點、變數可見並且一直動態更新。變數展示還有很多可以定製化的功能
- 基於鍵盤,簡單高效。支援游標鍵和Vi快捷鍵導航,還支援PDB的某些命令
- 支援搜尋原始碼,可以使用“m”來呼叫顯示載入模組的模組瀏覽器
- 可以通過定位一行並點選“b”來設定斷點,然後在斷點視窗中可視地進行編輯。或者點選“t”來執行游標所在行
- 可以通過按下“!”來直接進入python環境
- PuDB很關注異常處理,post-mortem模式將會使得追蹤程式崩潰的最後一步更簡單
- 整合IPython
- 支援python2.6以及更高版本,包括python3

我使用的是Anaconda,但是通過conda安裝pudb時總是出現網路問題,因此採用下面的形式:

sudo apt-get install python-pudb

或者

pip install pudb

首先給出示例程式碼:

import pudb; pu.db

def sum(n):
    result = 0
    for i in range(n):
        result = result + i
    return result

if __name__ == "__main__":
    y1 = sum(10)
    y2 = sum(100
) y3 = sum(100)

PUDB的使用很簡單,主要分兩步:

  • 在程式碼中插入
import pudb; pu.db
  • 使用pudb命令啟動python程式
# 為了演示,這裡建立了一個數列求和的python程式:pudbSum.py
pudb pudbSum.py

得到的介面可能如下:

這裡寫圖片描述

如果需要修改配色等屬性,可以執行“Ctrl+P”調出設定介面。我的配色風格為“monokai”。

學習PUDB除錯的整個過程中,最需要的快捷鍵就是“?”,用於調出幫助視窗,如下圖所示:

這裡寫圖片描述

常用的除錯命令如下:

  • Ctrl+p: 開啟屬性設定
  • n: next,也就是執行一步
  • s: step into,進入函式內部
  • f: finsh current function,結束當前函式?
  • c: continue,繼續執行
  • b: break point,在游標所在行新增或消除斷點
  • t: to cursor,執行到游標位置
  • !: 開啟python命令列
  • ?: 開啟幫助視窗
  • o: output screen,開啟輸出視窗/控制檯
  • m: module,開啟模組
  • q: quit,退出PUDB
  • /: 搜尋
  • ,/. 搜尋下一個/上一個

PUDB的介面主要分為:左上角的原始碼,右上角的變數區,左下角的命令列區,右下角的斷點區,以及右邊中間的StacK區

下面是我添加了一個斷點後,執行“c”命令後的結果。

這裡寫圖片描述