python里的pdb调试
准备
- 环境:64位win11
- 使用工具:vscode,当然也可以用pycharm等其他编辑工具
- 调试源代码(猜数字小游戏):
import random
quit = 0
while quit == 0:
level = int(input("输入游戏难度:"))
item = 100
if level == 1:
pass
elif level == 2:
item = 500
elif level == 3:
item = 1000
answer = random.randint(1,item)
guess = int(input("请输入你猜的数:"))
flag = 0
while flag == 0:
if guess == answer:
print("恭喜你猜对了!")
flag = 1
elif guess > answer:
print("大了!请输入小一点的数",end = " ")
guess = int(input("请输入你猜的数:"))
elif guess < answer:
print("小了!请输入大一点的数",end = " ")
guess = int(input("请输入你猜的数:"))
quit = int(input("是否进行下一次?是按0,否按1:"))
引入pbd模块
在python里面想要使用pdb调试,我们首先需要引入pdb模块,也就是在代码最前面加上这样一行代码
import pdb
只有这样我们才能继续进行。
设置断点
你可以在任何一行设置断点,让代码在运行到断点的时候停下来,和编辑软件自带的调试工具直接在代码旁边点上一点不同,你需要在你想停下来的地方上一行加上这样一行代码:
pdb.set_trace()
在开始运行之后你的代码就会停止在这个断点处,并且在终端进入pdb模式,如下我们熟悉的猜数字小游戏(使用软件vscode):
我们可以看到我在输入level之后一行设置了断点,在我运行之后,输入了level的值之后,程序就停了下来,进入了pdb模式。
常用命令
-
列出脚本清单 :l
‘l’是list的缩写,我们可以再终端输入l来列出脚本清单,也就是显示当时代码的上下文。如下图: -
打印表达式结果:p
p是print的缩写,在终端中输入
p 表达式,表达式……
的方式来打印你需要看到的量,比如下图:
打印quit,发现其值为0 -
下一行:n
我们程序需要继续往前跑,这时候我们就可以输入 ‘n’(next的缩写)来进行单步调试:
可以看到,程序已经一步步的运行。 -
运行程序直至遇到下一个断点:c
c为continue的缩写,在终端输入c之后,程序会从第一个断点一直运行到下一个断点:
如图,第一个断点停下之后在终端输入c,程序继续运行到第二个断点之后会再次停下。
- 退出pdb调试:q
q为quit的缩写,意思也就是退出:
可以看到,在终端输入q之后,前面的pdb消失了,pdb调试已退出。