2012-5-3简介:Debug对于任何开发人员都是一项非常重要的技能,它能够帮助我们准确的定位错误,发现程序中的bug。python提供了一系列debug的工具和包,可供我们选择。本文将主要阐述如何利用pythondebug相关工具进行debug。使用pdb进行调试pdb是python自带的一个包,为python程序提供了一种交互的源代码调试功能,主要特性包括设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量的值等。pdb提供了一些常用的调试命令,详情见表1。。="aaa"()b="bbb"c="ccc"final=a+b+cprintfinal开始调试:直接运行脚本,()处,选择n+enter可以执行当前的statement。在第一次按下了n+enter之后可以直接按enter表示重复执行上一条debug命令。[******@rcc-pok-idg-2255~]#>/root/(4)?()->b="bbb"(Pdb)n>/root/(5)?()->c="ccc"(Pdb)>/root/(6)?()->final=a+b+c(Pdb)list1importpdb2a="aaa"()4b="bbb"5c="ccc"6->final=a+b+c7printfinal[EOF](Pdb)[EOF](Pdb)n>/root/(7)?()->printfinal(Pdb)退出debug:使用quit或者q可以退出当前的debug,但是quit会以一种非常粗鲁的方式退出程序,其结果是直接crash。[******@rcc-pok-idg-2255~]#>/root/(4)?()->b="bbb"(Pdb)n>/root/(5)?()->c="ccc"(Pdb)qTraceback(mostrecentcalllast):File"",line5,in?c="ccc"File"",line5,in?c="ccc"File"/usr/lib64/",line48,(frame)File"/usr/lib64/",line67,::如果需要在调试过程中打印变量的值,可以直接使用p加上变量名,但是需要注意的是打印仅仅在当前的statement已经被执行了之后才能看到具体的值,否则会报NameError:<…....>错误。[******@rcc-pok-idg-2255~]#>/root/(4)?()->b="bbb"(Pdb)n>/root/(5)?()->c="ccc"(Pdb)pb'bbb'(Pdb)'bbb'(Pdb)n>/root/(6)?()->final=a+b+c(Pdb)c'(Pdb)pfinal***NameError:<>(Pdb)n>/root/(7)?()->printfinal(Pdb)pfinal''(Pdb)使用c可以停止当前的debug使程序继续执行。如果在下面的程序中继续有set_statement()的申明,则又会重新进入到debug的状态,读者可以在代码printfinal之前再加上set_trace()验证。[******@rcc-pok-idg-2255~]#>/root/(4)?()->b="bbb"(Pdb)n>/root/(5)?()->c="ccc"(Pdb
Python 代码调试技巧 来自淘豆网m.daumloan.com转载请标明出处.