📅  最后修改于: 2023-12-03 15:33:26.005000             🧑  作者: Mango
PDB(Python Debugger)是Python自带的调试器,可以辅助程序员找出代码中的错误和问题。在程序调试过程中,经常需要查看变量的值,以帮助我们理解程序的执行流程和找出问题所在。这时候,PDB就成为了我们的好帮手,下面我们来介绍如何使用PDB来查看变量的值。
在程序中引入PDB非常简单,只需要在代码中加入以下两行代码即可。
import pdb
pdb.set_trace()
其中,pdb.set_trace()这行代码可以在程序运行到这个位置时暂停程序的执行,等待用户交互。在这个时候,我们就可以使用PDB来查看变量的值了。
PDB提供了许多命令来查询变量的值,在这里我们列举一些常用的命令。
l/list:列出当前代码所在行的前后10行代码。例如:
> /Users/user/test.py(6)test()
-> for i in range(10):
(Pdb) l
1 import pdb
2
3 def test():
4 a = 1
5 b = 2
--> 6 for i in range(10):
7 a += i
8 b += i
9 print(a, b)
10
这里列出了代码所在行的前后10行代码。
p/ print:打印变量的值。例如:
(Pdb) p a
45
这会打印变量a的值。
n/next:执行下一行代码。例如:
(Pdb) n
> /Users/user/test.py(7)test()
-> a += i
(Pdb)
这里执行了下一行代码,也就是a += i。
s/step:进入函数或方法内部执行下一行代码。例如:
(Pdb) s
--Call--
> /Users/user/test.py(3)test()
-> def test():
(Pdb)
这里进入了test函数内部。
c/continue:继续执行,直到下一个断点或程序结束。例如:
(Pdb) c
这里程序会继续执行直到下一个断点或者结束。
下面是一个示例代码,我们可以使用PDB来查看变量的值。
import pdb
def test():
a = 1
b = 2
for i in range(10):
a += i
b += i
pdb.set_trace()
print(a, b)
test()
执行这个代码时,程序会在pdb.set_trace()这一行暂停,等待用户交互。接下来我们可以输入PDB命令来查看变量的值。
> /Users/user/test.py(6)test()
-> for i in range(10):
(Pdb) l
1 import pdb
2
3 def test():
4 a = 1
5 b = 2
6 -> for i in range(10):
7 a += i
8 b += i
9 pdb.set_trace()
10 print(a, b)
(Pdb) p a
1
(Pdb) n
> /Users/user/test.py(7)test()
-> a += i
(Pdb) p a
1
(Pdb) p b
2
(Pdb) n
> /Users/user/test.py(8)test()
-> b += i
(Pdb) p b
2
(Pdb) n
> /Users/user/test.py(6)test()
-> for i in range(10):
(Pdb) n
> /Users/user/test.py(7)test()
-> a += i
(Pdb) p a
2
(Pdb) n
> /Users/user/test.py(8)test()
-> b += i
(Pdb) p b
3
(Pdb) c
55 64
这里我们使用了l, p, n等命令来查看变量的值和执行代码。最后程序输出了变量a和b的值。