python调试方法
最简单 print()
只是影响代码美观,而且需要在后面删掉,比较麻烦
断言
凡是用print
来辅助查看的地方,都可以用断言(assert)来替代:
# err.py
def foo(s):
n = int(s)
assert n != 0, 'n is zero!'
return 10 / n
def main():
foo('0')
可以通过 -0 参数来关闭assert
$ python -O err.py
关闭以后相当于 pass
logging
# 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调试
运用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