电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python 如何調試程序崩潰錯誤

瀏覽:101日期: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 編程
相關文章:
主站蜘蛛池模板: 深圳善跑体育产业集团有限公司_塑胶跑道_人造草坪_运动木地板 | 东莞海恒试验仪器设备有限公司| 上海平衡机-单面卧式动平衡机-万向节动平衡机-圈带动平衡机厂家-上海申岢动平衡机制造有限公司 | 不锈钢复合板|钛复合板|金属复合板|南钢集团安徽金元素复合材料有限公司-官网 | 耐酸碱胶管_耐腐蚀软管总成_化学品输送软管_漯河利通液压科技耐油耐磨喷砂软管|耐腐蚀化学软管 | 高硼硅玻璃|水位计玻璃板|光学三棱镜-邯郸奥维玻璃科技有限公司 高温高压釜(氢化反应釜)百科 | 带式压滤机_污泥压滤机_污泥脱水机_带式过滤机_带式压滤机厂家-河南恒磊环保设备有限公司 | 讲师宝经纪-专业培训机构师资供应商_培训机构找讲师、培训师、讲师经纪就上讲师宝经纪 | 长沙网站建设制作「网站优化推广」-网页设计公司-速马科技官网 | 灰板纸、灰底白、硬纸板等纸品生产商-金泊纸业 | 小小作文网_中小学优秀作文范文大全| 引领中高档酒店加盟_含舍·美素酒店品牌官网 | 长沙广告公司|长沙广告制作设计|长沙led灯箱招牌制作找望城湖南锦蓝广告装饰工程有限公司 | 活性氧化铝球|氧化铝干燥剂|分子筛干燥剂|氢氧化铝粉-淄博同心材料有限公司 | 液压中心架,数控中心架,自定心中心架-烟台恒阳机电设计有限公司 行星搅拌机,双行星搅拌机,动力混合机,无锡米克斯行星搅拌机生产厂家 | 扬州汇丰仪表有限公司| 木材烘干机,木炭烘干机,纸管/佛香烘干设备-河南蓝天机械制造有限公司 | PAS糖原染色-CBA流式多因子-明胶酶谱MMP-上海研谨生物科技有限公司 | 鑫达滑石-辽宁鑫达滑石集团| 数显水浴恒温振荡器-分液漏斗萃取振荡器-常州市凯航仪器有限公司 | 热闷罐-高温罐-钢渣热闷罐-山东鑫泰鑫智能热闷罐厂家 | 南京兰江泵业有限公司-水解酸化池潜水搅拌机-絮凝反应池搅拌机-好氧区潜水推进器 | 散热器-电子散热器-型材散热器-电源散热片-镇江新区宏图电子散热片厂家 | 大倾角皮带机-皮带输送机-螺旋输送机-矿用皮带输送机价格厂家-河南坤威机械 | 留学生辅导网-在线课程论文辅导-留学生挂科申诉机构 | 东莞市天进机械有限公司-钉箱机-粘箱机-糊箱机-打钉机认准东莞天进机械-厂家直供更放心! | 变色龙云 - 打包app_原生app_在线制作平台_短链接_ip查询 | 「银杏树」银杏树行情价格_银杏树种植_山东程锦园林 | 东莞动力锂电池保护板_BMS智能软件保护板_锂电池主动均衡保护板-东莞市倡芯电子科技有限公司 | 水压力传感器_数字压力传感器|佛山一众传感仪器有限公司|首页 | 杭州中央空调维修_冷却塔/新风机柜/热水器/锅炉除垢清洗_除垢剂_风机盘管_冷凝器清洗-杭州亿诺能源有限公司 | 薪动-人力资源公司-灵活用工薪资代发-费用结算-残保金优化-北京秒付科技有限公司 | 特种电缆厂家-硅橡胶耐高温电缆-耐低温补偿导线-安徽万邦特种电缆有限公司 | 高速混合机_锂电混合机_VC高效混合机-无锡鑫海干燥粉体设备有限公司 | 真空乳化机-灌装封尾机-首页-温州精灌| 深圳品牌设计公司-LOGO设计公司-VI设计公司-未壳创意 | 头条搜索极速版下载安装免费新版,头条搜索极速版邀请码怎么填写? - 欧远全 | 哈希余氯测定仪,分光光度计,ph在线监测仪,浊度测定仪,试剂-上海京灿精密机械有限公司 | 西宁装修_西宁装修公司-西宁业之峰装饰-青海业之峰墅级装饰设计公司【官网】 | 振动时效_振动时效仪_超声波冲击设备-济南驰奥机电设备有限公司 北京宣传片拍摄_产品宣传片拍摄_宣传片制作公司-现像传媒 | POS机官网 - 拉卡拉POS机免费办理|官网在线申请入口 |