python 代码调试技巧

python 代码调试技巧

ID:15327099

大小:479.50 KB

页数:18页

时间:2018-08-02

python 代码调试技巧_第1页
python 代码调试技巧_第2页
python 代码调试技巧_第3页
python 代码调试技巧_第4页
python 代码调试技巧_第5页
资源描述:

《python 代码调试技巧》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Python代码调试技巧2012-5-3简介:Debug对于任何开发人员都是一项非常重要的技能,它能够帮助我们准确的定位错误,发现程序中的bug。python提供了一系列debug的工具和包,可供我们选择。本文将主要阐述如何利用pythondebug相关工具进行debug。使用pdb进行调试pdb是python自带的一个包,为python程序提供了一种交互的源代码调试功能,主要特性包括设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量的值等。pdb提供了一些常用的调试命令,详情见表1。表1.pdb常用命令命令解释break

2、或b设置断点设置断点continue或c继续执行程序list或l查看当前行的代码段step或s进入函数return或r执行代码直到从当前函数返回exit或q中止并退出next或n执行下一行pp打印变量的值help帮助下面结合具体的实例讲述如何使用pdb进行调试。清单1.测试代码示例importpdba="aaa"pdb.set_trace()b="bbb"c="ccc"final=a+b+cprintfinal开始调试:直接运行脚本,会停留在pdb.set_trace()处,选择n+enter可以执行当前的statement。在第一次按下了n+

3、enter之后可以直接按enter表示重复执行上一条debug命令。清单2.利用pdb调试[root@rcc-pok-idg-2255~]#pythonepdb1.py>/root/epdb1.py(4)?()->b="bbb"(Pdb)n>/root/epdb1.py(5)?()->c="ccc"(Pdb)>/root/epdb1.py(6)?()->final=a+b+c(Pdb)list1importpdb2a="aaa"3pdb.set_trace()4b="bbb"5c="ccc"6->final=a+b+c7printfinal[E

4、OF](Pdb)[EOF](Pdb)n>/root/epdb1.py(7)?()->printfinal(Pdb)退出debug:使用quit或者q可以退出当前的debug,但是quit会以一种非常粗鲁的方式退出程序,其结果是直接crash。清单3.退出debug[root@rcc-pok-idg-2255~]#pythonepdb1.py>/root/epdb1.py(4)?()->b="bbb"(Pdb)n>/root/epdb1.py(5)?()->c="ccc"(Pdb)qTraceback(mostrecentcalllast):Fi

5、le"epdb1.py",line5,in?c="ccc"File"epdb1.py",line5,in?c="ccc"File"/usr/lib64/python2.4/bdb.py",line48,intrace_dispatchreturnself.dispatch_line(frame)File"/usr/lib64/python2.4/bdb.py",line67,indispatch_lineifself.quitting:raiseBdbQuitbdb.BdbQuit打印变量的值:如果需要在调试过程中打印变量的值,可以直接使用p加

6、上变量名,但是需要注意的是打印仅仅在当前的statement已经被执行了之后才能看到具体的值,否则会报NameError:错误。清单4.debug过程中打印变量[root@rcc-pok-idg-2255~]#pythonepdb1.py>/root/epdb1.py(4)?()->b="bbb"(Pdb)n>/root/epdb1.py(5)?()->c="ccc"(Pdb)pb'bbb'(Pdb)'bbb'(Pdb)n>/root/epdb1.py(6)?()->final=a+b+c(

7、Pdb)pc'ccc'(Pdb)pfinal***NameError:(Pdb)n>/root/epdb1.py(7)?()->printfinal(Pdb)pfinal'aaabbbccc'(Pdb)使用c可以停止当前的debug使程序继续执行。如果在下面的程序中继续有set_statement()的申明,则又会重新进入到debug的状态,读者可以在代码printfinal之前再加上set_trace()验证。清单5.停止debug继续执行程序[root@rc

8、c-pok-idg-2255~]#pythonepdb1.py>/root/epdb1.py(4)?()->b="bbb"(Pdb)n>/root/e

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。