python 调试: print / assert / logging / pdb
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 调试: print / assert / logging / pdb相关的知识,希望对你有一定的参考价值。
先举例最为常见的调试方法是:print
用logging代替print, 可将信息输出到文件中,但我还不懂是哪个文件,怎么找。。。。
logging.info()可以输出一段文本
a.
import logging s = '0' n = int(s) logging.info('n = %d' % n) print(10 / n)
运行结果:
Traceback (most recent call last): File "log_info.py", line 6, in <module> print(10 / n) ZeroDivisionError: integer division or modulo by zero
b.
import logging logging.basicConfig(level=logging.INFO) #####增加这句 s = '0' n = int(s) logging.info('n = %d' % n) print(10 / n)
运行结果:
INFO:root:n = 0 Traceback (most recent call last): File "log_dug1.py", line 7, in <module> print(10 / n) ZeroDivisionError: integer division or modulo by zero
看,可以把文本内容输出到了会话窗口了
INFO:root:n = 0
单步运行:pdb
命令:
进入调试状态:python -m pdb 文件名
查看文件内容:l(小写)
查看变量 :p 变量名
调试当前语句:n
退出调试 :q
s = '0' n = int(s) j = 10 / n d = j + 1 print('d', d)
运行结果:
[email protected]:~/Documents/Temp/ErrorDebug$ python -m pdb log_pdb.py > /home/seeing-zynq/Documents/Temp/ErrorDebug/log_pdb.py(4)<module>() -> s = '0' (Pdb) l 1 #!/usr/bin/python 2 # -*- coding: utf-8 -*- 3 4 -> s = '0' 5 n = int(s) 6 j = 10 / n 7 d = j + 1 8 print('d', d) 9 10 11 (Pdb) n > /home/seeing-zynq/Documents/Temp/ErrorDebug/log_pdb.py(5)<module>() -> n = int(s) (Pdb) n > /home/seeing-zynq/Documents/Temp/ErrorDebug/log_pdb.py(6)<module>() -> j = 10 / n (Pdb) n ZeroDivisionError: 'integer division or modulo by zero' > /home/seeing-zynq/Documents/Temp/ErrorDebug/log_pdb.py(6)<module>() -> j = 10 / n
当运行到了
-> j = 10 / n
就会提出错误信息
ZeroDivisionError: 'integer division or modulo by zero'
以上是关于python 调试: print / assert / logging / pdb的主要内容,如果未能解决你的问题,请参考以下文章