我们知道,调试对程序员来说是非常重要的,利用好调试能够大大提高我们发现和修改程序的Bug,在python中调试的方法主要有两种。
第一种是从命令行运行:
可以在命令行中使用Python debugger 运行一个脚本,如:
$ python -m pdb my_script.py
这会出发debugger在脚本第一行指令出停止执行,这种方法在脚本程序比较短的时候很有帮助,在停止执行之后可以通过Pdb模式查看变量信息,并进行逐行调试。
第二种方式是从脚本内部运行调试:
我们可以在脚本内部设置断点,这样就可以在特定位置查看相关变量的信息和各种执行时的一些相关信息。可以使用pdb.set_trace()方法来实现。例如:
import pdb
def make_bread():
pdb.set_trace()
return "I don't have time"
print(make_bread())
保存脚本并运行之后,程序在运行时会自动进去debugger模式,并在pdb.set_trace()方法处停止运行,此时我们可以使用一些命令查看相关信息。
debugger模式下有一些比较常用的命令:
c: 继续执行
w: 显示当前正在执行的代码行的上下文信息
a: 打印当前函数的参数列表
s: 执行当前代码行,并停在第一个能停的地方(相当于单步进入)
n: 继续执行到当前函数的下一行,或者当前行直接返回(单步跳过)
单步跳过和单步进入的区别在于,单步进入会进入当前行调用的函数内部并停在里面,而单步跳过会全速执行完当前行调用的函数,并停在当前函数的下一行。
更多关于Pdb调试的信息可以参考官网:https://docs.python.org/2/library/pdb.html 或者https://docs.python.org/3/library/pdb.html