python调试_Python调试坑
寫python的人一般都不太看重調(diào)試, 因?yàn)檫@是一門解釋性語言, 在哪出錯會立馬在解釋器里提示出來。但是, 以上觀點(diǎn)只適用于小的腳本或者項(xiàng)目。因?yàn)槲以诮佑|目前項(xiàng)目之前, 我一直都是這么做的。
對于一個大的項(xiàng)目來說, 調(diào)試就不能這么做了, 這種大項(xiàng)目通常都是多進(jìn)程或者多線程, 普通的調(diào)試基本沒辦法。通常會通過記錄日志來調(diào)試, 記錄日志。。這里就是我想說得一個坑。正常的項(xiàng)目里面都會有容錯處理, 也就是各種try...except, 然后把拋出的異常寫到日志, 出錯的時候就可以通過看錯誤日志去定位信息。 但是, 拋出的異常通常只是一句話, 無法得到具體的錯誤代碼行, 這在一個模塊比較多的項(xiàng)目里簡直就是噩夢, 你可能要花費(fèi)很多時間去定位錯誤所在地方, 效率極其低下。 腫么辦呢, python里面有一個模塊叫traceback, 這個模塊是干嘛的呢, 請看官方解釋:This module provides a standard interface to extract, format and print stack traces of Python programs. It exactly mimics the behavior of the Python interpreter when it prints a stack trace. This is useful when you want to print stack traces under program control, such as in a “wrapper” around the interpreter.
也就是說, 這個模塊就像一個縮小版的解釋器一樣, 可以跟蹤代碼運(yùn)行棧。 簡單來說, 可以看到代碼詳細(xì)出錯信息, 包括在哪出錯。怎么用呢, 就說一種用法, 我覺得夠用了:import traceback
try:1/0
except Exception as e:traceback.print_exc(file=open('/tmp/error', 'wb'))
這樣程序在拋出異常后, 就會將出錯信息寫到'/tmp/error'這個文件中, just enjoy it!
另外要說的一種方法是logging模塊中用到的方法。
對于大型項(xiàng)目而言,用logging模塊調(diào)試是一種更好的方法,日志集中管理。
要使用日志,首先要聲明一個logger,具體怎么聲明這里不再贅述,參見python官方文檔或者google。
效果和traceback一樣,代碼如下:try:1/0
except Exception as e:logger.exception(e)
總結(jié)
以上是生活随笔為你收集整理的python调试_Python调试坑的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: b树与b+树的区别_面试必考:B树、B树
- 下一篇: 姐姐结婚适合送什么礼物 送给姐姐的结婚礼