导读
当我们使用编译器来开发python项目的时候,可以利用编译器的自带的调试功能来对python的脚本进行调试。其实,在python3.7以后自带了一个调试器PDB
,可以很方便的帮助我们在notebook中对python的代码进行调试,这篇文章就让我们来看看如何使用PDB进行调试吧
PDB调试代码
- 一个简单的例子
我们定义了两个方法,通过set_trace
方法我们可以程序中设置断点
import pdb
import sys
def add(num1=0, num2=0):
return int(num1) + int(num2)
def sub(num1=0, num2=0):
return int(num1) - int(num2)
def main():
num1 = 28
num2 = 8
pdb.set_trace() #添加断点
addition = add(num1, num2)
print (addition)
subtraction = sub(num1, num2)
print (subtraction)
if __name__ == '__main__':
main()
- PDB常用的命令
在使用PDB调试的时候,当我们运行程序的时候会出现一个命令的窗口
,通过输入命令来实现在notebook中对python的代码进行调试
ENTER (重复上次命令)
c (继续)
l (查找当前位于哪里)
s (进入子程序,如果当前有一个函数调用,那么 s 会进入被调用的函数体)
n(ext) 让程序运行下一行,如果当前语句有一个函数调用,用 n 是不会进入被调用的函数体中的
r (运行直到子程序结束)
!<python 命令>
h (帮助)
a(rgs) 打印当前函数的参数
j(ump) 让程序跳转到指定的行数
l(ist) 可以列出当前将要运行的代码块
p(rint) 最有用的命令之一,打印某个变量
q(uit) 退出调试
r(eturn) 继续执行,直到函数体返回
-
下一行
在运行cell中的代码之后,会出现一个下面的命令窗口
在ipdb
的输入框中输入字母n
然后回车
运行,程序会跳到下一行不会进行到调用函数的内部,如果想要子函数内部进行调试可以在子函数内部添加set_trace
来实现 -
查看变量的值
通过在ipdb中使用命令p 变量名
输出变量的值 -
动态添加断点
在运行程序之后,我们可以通过在ipdb中输入b 行数
动态的添加断点 -
动态分配变量
在使用pdb
对程序进行调试的过程中,我们可以在ipdb
中动态的设置变量的值来进行调试 -
退出PDB调试
通过命令q
可以退出调试环境