python 調試: print / assert / logging / pdb
阿新 • • 發佈:2018-07-21
max-width 怎麽 sse variant 調試方法 oot sys pri temp 先舉例最為常見的調試方法是: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)
運行結果:
z@g:~/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