您的位置:

Python Debugging神器 - import pdb

一、pdb是什么?

Python Debugger是Python标准库里面的一个调试工具模块。其中最常用的模式是使用pdb.set_trace()进行单步调试,可以帮助程序员找到代码中出现的错误和问题。

二、pdb的基本使用方式

使用pdb的方法非常的简单,只需要在程序中插入pdb.set_trace()代码即可。一旦执行到这条语句的时候,代码会停止执行,此时程序会进入到pdb调试器的交互模式。在交互模式中,输入命令可以帮助我们查看当前程序执行到哪里。比如输入变量名可以查看变量值,或者使用p命令查看表达式执行的结果等等。最终输入q命令可以退出pdb交互的方式,让程序继续往下执行。


import pdb
def add(x, y):
    pdb.set_trace()
    return x + y
print(add(1, 2))

当程序运行到pdb.set_trace()时,会进入pdb调试器环境,可以使用多种命令来查看变量值、控制代码流程和退出dbg环境:


(Pdb) p x
1
(Pdb) p y
2
(Pdb) p x + y
3
(Pdb) n
> path/to/code.py(4)add()
-> return x + y
(Pdb) p x + y
3
(Pdb) quit

三、pdb常用命令

1. 交互命令

  • n - Next,执行下一条语句。
  • s - Step,进入函数内部。
  • r - Return,执行代码直到当前函数返回。
  • q - Quit,退出pdb调试器环境。
  • c - Continue,直到遇到断点或者程序结束。

2. 输出命令

  • p - Print,输出变量的值。
  • pp - Pretty Print,以更漂亮的方式输出。
  • l - List,输出当前代码的执行位置。
  • w - Where,查看当前栈的状态。

3. 断点命令

  • b - Break,设置代码中断点。
  • c - Clear,清除一个断点。
  • j - Jump,跳转到指定的行。

4. 其他命令

  • h - Help,查看命令的帮助信息。
  • h <command> - Help,查看指定命令的帮助信息。
  • ! - 执行一个python表达式。

四、pdb注意事项

在使用pdb.set_trace()进行调试的时候,需要注意以下几个事项:

  • 不要将pdb.set_trace()附加到常规代码。 在进行正常的代码执行时,使用pdb会使您的代码变慢,而且会影响运行时间。只有在必要的时候,或者在快要调试的时候才使用pdb。
  • 尽量避免在循环中使用pdb。 在循环中使用pdb会使您的代码变得非常缓慢。
  • 不要在开发中使用pdb。 如果您对pdb非常熟悉,并且能够快速调试代码,那么这个规则可以忽略。但是对于新手来说,会使用pdb来弥补对代码本身的不理解,这样会导致您的代码出现大量的错误。

五、结语

使用pdb可以帮助我们更好的理解代码的执行过程,对于程序的调试和问题定位也非常有帮助。在使用的过程中,需要注意pdb的使用规则,才能更好的发挥pdb的作用。