Python調試工具

1. 日誌

經過日誌或者print來打印變量。必要時能夠打印locals()globals()html

建議使用logging.debug()來代替print,這樣到了正式環境,就能夠統一刪除這些日誌。python

2.trace

Python有個trace模式,能夠打印整個程序的執行流linux

# encoding=utf8
def f():
    print 'aa'


if __name__ == '__main__':
    f()

例如這段簡單的程序,執行python -mtrace --trace test.py就會輸出下面的日誌:redis

--- modulename: test, funcname: <module>   # test模塊,module級函數
test.py(2): def f():   #test.py的第2行,執行def f命令定義函數
test.py(6): if __name__ == '__main__':
test.py(7):     f()
 --- modulename: test, funcname: f
test.py(3):     print 'aa'
aa
 --- modulename: trace, funcname: _unsettrace
trace.py(80):         sys.settrace(None)

能夠詳細得看到這代代碼在Python中的執行流程。windows

當代碼比較複雜,例如調用了一些第三方庫,這個trace日誌就會很是多,因此最好重定向到一個文件裏面,慢慢分析。ssh

3.PDB

# encoding=utf8
import pdb
def f2():
    a = 1
    pdb.set_trace()  # 設置斷點
    b = 2
    c = a + b
    pdb.set_trace()


if __name__ == '__main__':
    f2()

在代碼裏面設置斷點。執行代碼python -mpdb test.py,就能夠調試程序了。進程會在斷點處暫停運行,等待咱們執行命令函數

(vsing_env) [root@www script]# python -mpdb  test.py              
> /data/selfmoe_backend/script/test.py(2)<module>()
-> import pdb
(Pdb) c  
> /data/selfmoe_backend/script/test.py(13)f2()
-> b=2
(Pdb) p a
1
(Pdb) l
  8         cli=redis.Redis(host='127.0.0.1',port='6801')
  9         cli.get('test')
 10     def f2():
 11         a=1
 12         pdb.set_trace()
 13  ->     b=2
 14         c=a+b
 15         pdb.set_trace()
 16     if __name__ == '__main__':
 17         f2()
[EOF]

斷點處能夠執行的命令有:工具

  • c continue 繼續
  • q quit 退出
  • l list 顯示斷點先後的源碼
  • w or where 回溯執行到當前斷點的過程
  • d down 回溯的下一頁
  • u up 回溯的上一頁
  • 回車 重複最後一個命令,例如就不用一直按c,能夠只按回車

其餘分支測試

  • ipdb pdb的基礎上增長顏色,自動補齊
  • pudb gui版本
  • winpdb 遠程調試,在windows調試linux的進程

上面幾個庫的接口和pdb都是同樣的。ui

4.Pycharm

使用Pycharm這個IDE進行調試。這個功能就比較強大了。

Pycharm也支持遠程調試。也就是在windows界面操做,進程運行在linux。

方法是:

  1. Settings-Project Interpreter 裏面點擊Project Interpreter右邊的配置,點擊Add
  2. 選擇SSH Interpreter
  3. 若是已有遠程同步代碼配置,就選擇Existing Server configuration
  4. 不然就選擇New server configuration ,設置遠程機的IP和ssh端口和用戶名,密碼等
  5. 設置遠程機的Python地址,例如/data/env/bin/python
  6. 設置Sync folders。這個是windows和遠程機的目錄映射,例如E://project映射到/data/project。那若是執行E://project/test.py腳本就至關於執行/data/project/test.py腳本
  7. 建立測試的腳本,test.py
  8. 打開Run-Edit Configurations,修改test.pyPython interpreter爲剛纔設置的Remote Python
  9. 點擊 run test.py 就能在遠程機執行這個腳本了,console會展現遠程機的console
  10. 除了run,也能夠debug

參考:
Python調試工具

相關文章
相關標籤/搜索