本文主要介绍python调试器pdb的简单使用,帮助您更好地理解和学习使用python。感兴趣的朋友可以了解一下。
有两种方法可以使用PDB:
1. 单步执行代码,通过命令 python -m pdb xxx.py 启动脚本,进入单步执行模式
Pdb命令行:
1)进入命令行调试模式,python-mpdbxxx.py。
2) H:(救命2)h:(救命
3) W: (where)打印当前的执行堆栈
4) D: (down)执行跳转到当前栈的更深层次(我个人觉得没什么用)
5) U: (UP)跳到当前堆栈的前一层。
6) B: (break)添加一个断点
列出所有当前断点,并计算断点被执行的次数。
Bline_no:当前脚本的行添加了一个断点。
Bfilename:line_no:在脚本文件名的line_no行添加一个断点
b:在函数function的第一条可执行语句处添加断点
7) tbreak:(临时中断)临时断点
第一次执行到这个断点后,这个断点会被自动删除,用法和b一样。
8) Cl:(清除8)cl:(清除断点。
Cl清除所有断点。
Clbpnumber1bpnumber2.用断点bpnumber1、bpnumber2清除断点.
Cllineno清除当前脚本的lineno行的断点。
Clfilename:line_no清除脚本文件名的line_no行的断点。
9)disable:禁用断点,参数为bpnumber。与cl不同的是,断点仍然存在,但没有启用。
10)enable:激活断点,参数为bpnumber。
1) s:(步骤)执行下一个命令。
如果这句话是函数调用,s会执行到函数的第一句话。
12) n: (next)执行下一条语句。
如果这句话是函数调用,执行函数,然后执行下一条当前执行的语句。
13) R: (return)将当前运行的函数执行到底。
14) C:(继续14)c:(继续执行,直到到达下一个断点。
15) L: (list)列出源代码。
列出当前执行的语句周围的11个代码。
Lfirst在第一行列出了11个代码。
Lfirstsecond列出了第一秒范围内的代码。如果secondfirst,second将被解析成行数。
16) A: (args)列出当前正在执行的函数
17) p表达式:(打印)输出表达式的值。
18)ppexpression:更好看的pexpression。
19)运行:重启调试,相当于重启。
20)问:(退出)退出调试
1) jlineno: (jump)设置下面一段执行的语句函数。
只能跳到栈底,重新向后执行,直接向前执行到行号。
22) UNT:(直到)执行到下一行(跳出循环),或者当前堆栈结束。
23)conditionbpnumberconditon,为断点设置条件。当参数条件返回True时,bpnumber断点有效;否则,bpnumber断点无效。
注意:
1:直接输入,执行前面的命令;
2:输入一个PDB不知道的命令,PDB会在当前环境下作为Python语句执行;
示例:
#test1.py
s='0 '
n=int(s)
打印(10张/张)
打开命令行并运行test1.py
python -m pdb test1.py
Pdm定位下一步要执行的代码-s='0 ',并输入命令L,即上面的第15个命令L(列表),以查看以下代码:
输入命令n来单步执行代码。
您也可以输入p变量名来查看变量。
但是,该变量的代码必须运行后才能查看;否则,找不到该变量,如下所示
在开始运行test.py时,第一行代码s='0 '实际上还没有执行。看变量s会提示找不到变量。
输入命令q结束调试并退出程序。
2. pdb单步执行太麻烦了,所以第二种方法是import pdb 之后,直接在代码里需要调试的地方放一个pdb.set_trace(),就可以设置一个断点, 程序会在pdb.set_trace()暂停并进入pdb调试环境,可以用pdb 变量名查看变量,或者c继续运行
导入pdb
将上面的例子修改如下,导入pdb,将pdb.set_trace()添加到可能出错的代码前面。
# test1.py
导入pdb
s='0 '
n=int(s)
Pdb.set_trace() #在这里运行时会自动暂停。
打印(10张/张)
运行后,从程序到电源故障的下一行代码将被挂起。
以上是python调试器pdb的简单使用细节。更多关于python调试器pdb的信息,请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。