📜  pdb 列表变量值 (1)

📅  最后修改于: 2023-12-03 15:33:26.005000             🧑  作者: Mango

PDB(Listing Variable Values)

PDB(Python Debugger)是Python自带的调试器,可以辅助程序员找出代码中的错误和问题。在程序调试过程中,经常需要查看变量的值,以帮助我们理解程序的执行流程和找出问题所在。这时候,PDB就成为了我们的好帮手,下面我们来介绍如何使用PDB来查看变量的值。

在程序中引入PDB

在程序中引入PDB非常简单,只需要在代码中加入以下两行代码即可。

import pdb

pdb.set_trace()

其中,pdb.set_trace()这行代码可以在程序运行到这个位置时暂停程序的执行,等待用户交互。在这个时候,我们就可以使用PDB来查看变量的值了。

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的值。