如果你还只会使用print来定位python程序问题,那这篇文章就是为你写的,这篇文章将带你入门python调试器。python标准库提供了一个叫pdb的调试器,它提供了调试所需的绝大多数常用功能,比如断点、单行步进、堆栈帧数据的检查等。了解一些python pdb的基本用法和知识,将极大的提高我们的开发技能和效率,节省排查bug的时间。
现在我们使用pdb对下面这个简单的python程序进行调试,以演示pdb的基本用法。
运行pdb调试器
在python解释器的命令行参数中添加“-m pdb”就可以启动pdb调试器对应用程序进行调试,如下:
除此之外,还可以通过在程序中设置断点的方式启动调试器。首先导入pdb模块并在需要暂停处调用set_trace函数设置断点。
直接执行加入了断点的程序,程序会自动暂停在设置了断点处。
查看程序执行栈
python调试器启动后,可以通过下面这些命令当前栈的信息。
w(here):显示当前执行的行以及执行栈的位置。
l(ist):显示当前位置的代码。
u(p)/d(own):往上或往下切换调用栈。
单步调试
n(ext):执行当前函数下一行代码。
s(tep):执行下一行代码,如果调用函数就会进入被调用的函数。
c(ontinue):继续执行直到遇到下一个断点。
检查变量内容
在调试器中,可以使用args命令打印当前函数的变量,如下所示:
使用命令是 p(rint)可以打印单个变量的内容,还可以对表达式求值。
最后
介绍了pdb的基本用法,python 文档包含每个 pdb 命令的参考和示例,具体需要时请查阅。