首页系统PYTHONPDB(Python调试器pdb)

PYTHONPDB(Python调试器pdb)

编程之家2024-02-04106次浏览

一、如何用pdb进行python调试

本文章讲述了如何用pdb进行python调试讲解.当手边没有IDE,面对着python调试犯愁时,你就可以参考下本文;(pdb命令调试)和(pdb)help用pdb进行python调试,用法基本和gdb差不多,先看一个简单的例子:epdb1.py.#epdb1.py--experimentwiththePythondebugger,pdba=\"aaa\"b=\"bbb\"c=\"ccc\"final=a+b+cprintfinal比如要对这个程序进行调试:1:在文件前面加上这一句,引入调试的模块。importpdb2:在要开始调试的一行加上pdb.set_trace()文件变成:#epdb1.py--experimentwiththePythondebugger,pdbimportpdba=\"aaa\"pdb.set_trace()b=\"bbb\"c=\"ccc\"final=a+b+cprintfinal可以运行这个程序,到断点出会停下来,和gdb类似,可以执行命令:直接回车是重复前一条命令!p(print)查看一个变量值n(next)下一步s(step)单步,可进入函数c(continue)继续前进l(list)看源代码用pdb调试有多种方式可选:1.命令行启动目标程序,加上-m参数,这样调用myscript.py的话断点就是程序的执行第一行之前python-mpdbmyscript.py2.在Python交互环境中启用调试>>>importpdb>>>importmymodule>>>pdb.run('mymodule.test()')3.比较常用的,就是在程序中间插入一段程序,相对于在一般IDE里面打上断点然后启动debug,不过这种方式是hardcode的if__name__==\"__main__\":a=1importpdbpdb.set_trace()b=2c=a+bprint(c)然后正常运行脚本,到了pdb.set_trace()那就会定下来,就可以看到调试的提示符(Pdb)了常用的调试命令h(elp),会打印当前版本Pdb可用的命令,如果要查询某个命令,可以输入h[command],例如:\"hl\"-查看list命令l(ist),可以列出当前将要运行的代码块(Pdb)l497pdb.set_trace()498base_data={}499new_data={}500try:501execfile(base_file_name,{},base_data)502->execfile(new_file_name,{},new_data)503except:504logger.writeLog(\"error!loadresultlogerror!\")505print\"loadcmplogserror!\"506raiseException,\"loadcmplogserror!\"507>断点设置(Pdb)b10#断点设置在本py的第10行或(Pdb)bots.py:20#断点设置到ots.py第20行删除断点(Pdb)b#查看断点编号(Pdb)cl2#删除第2个断点>运行(Pdb)n#单步运行(Pdb)s#细点运行也就是会下到,方法(Pdb)c#跳到下个断点>查看(Pdb)pparam#查看当前变量值(Pdb)l#查看运行到某处代码(Pdb)a#查看全部栈内变量b(reak),设置断点,例如\"b77″,就是在当前脚本的77行打上断点,还能输入函数名作为参数,断点就打到具体的函数入口,如果只敲b,会显示现有的全部断点(Pdb)b504Breakpoint4at/home/jchen/regression/regressionLogCMP.py:504conditionbpnumber[condition],设置条件断点,下面语句就是对第4个断点加上条件\"a==3\"(Pdb)condition4a==3(Pdb)bNumTypeDispEnbWhere4breakpointkeepyesat/home/jchen/regression/regressionLogCMP.py:504stoponlyifa==3cl(ear),如果后面带有参数,就是清除指定的断点(我在Python2.4上从来没成功过!!!);如果不带参数就是清除所有的断点(Pdb)clClearallbreaks?ydisable/enable,禁用/激活断点(Pdb)disable3(Pdb)bNumTypeDispEnbWhere3breakpointkeepnoat/home/jchen/regression/regressionLogCMP.py:505n(ext),让程序运行下一行,如果当前语句有一个函数调用,用n是不会进入被调用的函数体中的s(tep),跟n相似,但是如果当前有一个函数调用,那么s会进入被调用的函数体中c(ont(inue)),让程序正常运行,直到遇到断点j(ump),让程序跳转到指定的行数(Pdb)j497>/home/jchen/regression/regressionLogCMP.py(497)compareLog()->pdb.set_trace()a(rgs),打印当前函数的参数(Pdb)a_logger=_base=./base/MRM-8137.log_new=./new/MRM-8137.log_caseid=5550001_toStepNum=10_cmpMap={'_bcmpbinarylog':'True','_bcmpLog':'True','_bcmpresp':'True'}p,最有用的命令之一,打印某个变量(Pdb)p_newu'./new/MRM-8137.log'!,感叹号后面跟着语句,可以直接改变某个变量q(uit),退出调试==============================================================================================在python中使用pdb模块可以进行调试importpdbpdb.set_trace()也可以使用python-mpdbmysqcript.py这样的方式(Pdb)会自动停在第一行,等待调试,这时你可以看看帮助(Pdb)h说明下这几个关键命令>断点设置(Pdb)b10#断点设置在本py的第10行或(Pdb)bots.py:20#断点设置到ots.py第20行删除断点(Pdb)b#查看断点编号(Pdb)cl2#删除第2个断点>运行(Pdb)n#单步运行(Pdb)s#细点运行也就是会下到,方法(Pdb)c#跳到下个断点>查看(Pdb)pparam#查看当前变量值(Pdb)l#查看运行到某处代码(Pdb)a#查看全部栈内变量(Pdb)w列出目前callstack中的所在层。(Pdb)d在callstack中往下移一层(Pdb)u在callstack中往上移一层。如果在上移一层之后按下n,则会在上移之后的一层执行下一个叙述,之前的functioncall就自动返回。(Pdb)cl清除指定的断点。如果没有带参数,则清除所有断点。(Pdb)disable取消所有断点的功能,但仍然保留这些断点。(Pdb)enable恢复断点的功能。(Pdb)ignore设定断点的忽略次数。如果没指定count,其初始为0。当count为0时,断点会正常动作。若有指定count,则每次执行到该中断,count就少1,直到count数为0。(Pdb)conditionbpnumber[condition](Pdb)j(ump)lineNo.跳到某行执行。只有在callstack的最底部才能作用。(Pdb)l列出目前所在档案中的位置。连续地l命令会一直列到档案结尾,可以使用指定行数或范围来打印。(Pdb)pp和p命令类似,但是使用pprintmodule(没用过pprint,详情请参考PythonLibraryReference)。(Pdb)alias以一个\"别名\"代替\"一群除错命令\n

PYTHONPDB(Python调试器pdb)

二、python游戏按键无效

要继续调试.

调试和分析在Python开发中发挥着重要作用。调试器可帮助程序员分析完整的代码。调试器设置断点,而剖析器运行我们的代码,并给我们执行时间的详细信息。分析器将识别程序中的瓶颈。我们将了解pdb Python调试器,cProfile模块和timeit模块来计算Python代码的执行时间。

Python调试技术print()语句。

logging:这类似于print语句,但具有更多上下文信息。

pdb调试器:常用的调试技术。在解释器和程序内从命令行使用pdb。

IDE调试器:IDE具有集成调试器。它允许开发人员执行他们的代码,然后开发人员可以在程序执行时进行检查。比如windide中的调试菜单:

PYTHONPDB(Python调试器pdb)

三、python怎么调试程序

如果你还只会使用print来定位python程序问题,那这篇文章就是为你写的,这篇文章将带你入门python调试器。python标准库提供了一个叫pdb的调试器,它提供了调试所需的绝大多数常用功能,比如断点、单行步进、堆栈帧数据的检查等。了解一些python pdb的基本用法和知识,将极大的提高我们的开发技能和效率,节省排查bug的时间。

现在我们使用pdb对下面这个简单的python程序进行调试,以演示pdb的基本用法。(推荐学习:Python视频教程)

运行pdb调试器

在python解释器的命令行参数中添加“-m pdb”就可以启动pdb调试器对应用程序进行调试,如下:

除此之外,还可以通过在程序中设置断点的方式启动调试器。首先导入pdb模块并在需要暂停处调用set_trace函数设置断点。

直接执行加入了断点的程序,程序会自动暂停在设置了断点处。

PYTHONPDB(Python调试器pdb)

更多Python相关技术文章,请访问Python教程栏目进行学习!以上就是小编分享的关于python怎么调试程序的详细内容希望对大家有所帮助,更多有关python教程请关注环球青藤其它相关文章!

自定义播放器(Android怎么自定义视频播放器)风林火山下载(风林火山系统下载与安装)