最簡單print()
只是影響**美觀,而且需要在後面刪掉,比較麻煩
凡是用print
來輔助檢視的地方,都可以用斷言(assert)來替代:
# err.py
deffoo
(s):
n = int(s)
assert n != 0, 'n is zero!'
return
10 / n
defmain
(): foo('0')
可以通過 -0 引數來關閉assert
$ python -o err.py
關閉以後相當於pass
# err.py
import logging
s = '0'
n = int(s)
logging.info('n = %d' % n)
print
10 / n
import logging
logging.basicconfig(level=logging.info)
另外 logging level分為 critical , error , warning , debug , info , notset
越右邊→_→資訊越多
運用pdb命令,用單步除錯等
使用gdb或者ipdb工具十分方便如果只想看結論的話,我們的最佳實踐是在需要除錯的**中插入」import ipdb;ipdb.set_trace()」或者」import pudb;pudb.set_trace」即可
(摘自 知乎)
# err.py
import pdb
s = '0'
n = int(s)
pdb.set_trace() # 執行到這裡會自動暫停
print
10 / n
Python 除錯方法
from 這幾天一直在查乙個線上程式 hang 住的問題.這個程式總是在執行50分鐘後 hang 住,通過以下的一些除錯手段,發現是打日誌的時候因為 buffer 滿被 block 了.python 日誌是預設打到 stderr 的,無論日誌級別.而我這個程式是被另乙個程式調起的,父程序沒有接收子程...
python 除錯方法
一 使用pdb 二 使用gdb需首先配置gdb pythin支援,步驟如下 1 修改python 2.6 misc gdbinit,將 while i f f nlocals修改為 while i f f code co nlocals2 在檔案 gdbinit中,加入如下內容 source pyt...
python除錯方法
之前除錯python程式都是用print引數,感覺有點弱爆啊,最近發現python也有類似c語言gdb的工具pdb,記錄下pdb的使用方法和心得。先找了段簡單的測試程式 複製 from ftplib import ftp import sys import socket import pdb def...