亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

更多QQ空间微信QQ好友腾讯朋友复制链接
您的位置:首頁/技術文章
文章詳情頁

Python 如何調試程序崩潰錯誤

【字号: 作者:豬豬瀏覽:74日期:2022-07-15 10:54:53

問題

你的程序崩潰后該怎樣去調試它?

解決方案

如果你的程序因為某個異常而崩潰,運行 python3 -i someprogram.py 可執行簡單的調試。 -i 選項可讓程序結束后打開一個交互式shell。 然后你就能查看環境,例如,假設你有下面的代碼:

# sample.pydef func(n): return n + 10func(’Hello’)

運行 python3 -i sample.py 會有類似如下的輸出:

bash % python3 -i sample.pyTraceback (most recent call last): File 'sample.py', line 6, in <module> func(’Hello’) File 'sample.py', line 4, in func return n + 10TypeError: Can’t convert ’int’ object to str implicitly>>> func(10)20>>>

如果你看不到上面這樣的,可以在程序崩潰后打開Python的調試器。例如:

>>> import pdb>>> pdb.pm()> sample.py(4)func()-> return n + 10(Pdb) w sample.py(6)<module>()-> func(’Hello’)> sample.py(4)func()-> return n + 10(Pdb) print n’Hello’(Pdb) q>>>

如果你的代碼所在的環境很難獲取交互shell(比如在某個服務器上面), 通常可以捕獲異常后自己打印跟蹤信息。例如:

import tracebackimport systry: func(arg)except: print(’**** AN ERROR OCCURRED ****’) traceback.print_exc(file=sys.stderr)

要是你的程序沒有崩潰,而只是產生了一些你看不懂的結果, 你在感興趣的地方插入一下 print() 語句也是個不錯的選擇。 不過,要是你打算這樣做,有一些小技巧可以幫助你。 首先,traceback.print_stack() 函數會你程序運行到那個點的時候創建一個跟蹤棧。例如:

>>> def sample(n):... if n > 0:... sample(n-1)... else:... traceback.print_stack(file=sys.stderr)...>>> sample(5) File '<stdin>', line 1, in <module> File '<stdin>', line 3, in sample File '<stdin>', line 3, in sample File '<stdin>', line 3, in sample File '<stdin>', line 3, in sample File '<stdin>', line 3, in sample File '<stdin>', line 5, in sample>>>

另外,你還可以像下面這樣使用 pdb.set_trace() 在任何地方手動的啟動調試器:

import pdbdef func(arg): ... pdb.set_trace() ...

當程序比較大而你想調試控制流程以及函數參數的時候這個就比較有用了。 例如,一旦調試器開始運行,你就能夠使用 print 來觀測變量值或敲擊某個命令比如 w 來獲取追蹤信息。

討論

不要將調試弄的過于復雜化。一些簡單的錯誤只需要觀察程序堆棧信息就能知道了, 實際的錯誤一般是堆棧的最后一行。 你在開發的時候,也可以在你需要調試的地方插入一下 print() 函數來診斷信息(只需要最后發布的時候刪除這些打印語句即可)。

調試器的一個常見用法是觀測某個已經崩潰的函數中的變量。 知道怎樣在函數崩潰后進入調試器是一個很有用的技能。

當你想解剖一個非常復雜的程序,底層的控制邏輯你不是很清楚的時候, 插入 pdb.set_trace() 這樣的語句就很有用了。

實際上,程序會一直運行到碰到 set_trace() 語句位置,然后立馬進入調試器。 然后你就可以做更多的事了。

如果你使用IDE來做Python開發,通常IDE都會提供自己的調試器來替代pdb。 更多這方面的信息可以參考你使用的IDE手冊。

以上就是Python 如何調試程序崩潰錯誤的詳細內容,更多關于Python調試程序崩潰錯誤的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 中文字幕亚洲欧美日韩不卡 | 国产午夜高清一区二区不卡 | 成人性色生活片免费看爆迷你毛片 | 日本中文字幕不卡在线一区二区 | 一级黄色大片免费 | 亚洲 欧美 日韩 在线 香蕉 | 日韩免费a级在线观看 | 日本免费人成网ww555在线 | 麻豆视频免费入口 | 中文字幕国产在线 | 女人与zzzxxxx0oo0| 国产成人免费高清视频网址 | 亚洲网视频 | 国产成人综合高清在线观看 | 欧美性一区| 国产免费高清在线精品一区 | 一级特黄a视频 | 999久久久精品视频在线观看 | 狂野猛交xxxx吃奶 | 黄色中文字幕 | 日韩中文字幕久久久经典网 | 免费欧美日韩 | 欧美黄色大片网站 | 日韩在线手机看片免费看 | 亚洲欧美日韩国产综合 | 国产一区日韩二区欧美三区 | 欧美一区二区亚洲 | 57pao国产成视频一永久免费 | 1024手机在线观看 | 一级特黄特黄的大片免费 | 婷婷成人基地 | 亚洲手机在线 | 亚洲国产婷婷香蕉久久久久久 | 亚洲综合网国产福利精品一区 | 性生免费视频 | 农村三级孕妇视频在线 | 亚洲青青青网伊人精品 | 国产精品a区 | 国产精品久久久久久久y | 国产目拍亚洲精品一区二区三区 | 欧美第一精品 |