如何使用 pdb 来性感 debug 你的 Python 代码?

当你的代码写得多了,你总会出现这样或者那样的错误,有时候代码突然可以用,有时候代码又突然傻逼,有时候你只是离开一会,它就自动好了…就像女生的心思,总是让人捉摸不透,总是那么的魔幻。


如何使用 pdb 来性感 debug 你的 Python 代码?


今天,小帅b来跟你说说 debug ,其实 debug 还是挺重要的,它除了可以帮助你自己发现代码自身的 bug 之外,你还可以通过 debug 清楚的知道代码的执行流程,比如变量是怎么赋值的,数据是如何改变的等等,你都可以通过 debug 手段清楚的看到这些玩意的变化。


如何使用 pdb 来性感 debug 你的 Python 代码?


除此之外,当你在学习一个新的库或者新的代码特性的时候,debug 也是常用的学习手段,因为你可以通过它更容易理解代码为什么是那样写的。


如何使用 pdb 来性感 debug 你的 Python 代码?


接下来我会跟你说说 Python 内置的 debug 工具 pdb 的使用。


我们先来看看这样的例子:


如何使用 pdb 来性感 debug 你的 Python 代码?


很简单,这里我们定义了个方法,然后传递参数 name 返回一个字符串。


不过你可以看到第二行调了一个 breakpoint 方法,这是打断点的意思,它是 Python 内置的,直接调用即可,接着我们来运行一下这个 py:


如何使用 pdb 来性感 debug 你的 Python 代码?


这时候可以看到:


第一行:> 后面告诉我们打断点的位置


第二行:-> 就是此刻 Python 执行到的暂停位置(因为我们在此前打了断点了)


第三行:(pdb):意思是说我们可以使用 pdb 这个工具的相关命令了。


如果你不知道如何使用 pdb 的调试命令,可以输入 help 得到相关的帮助:


如何使用 pdb 来性感 debug 你的 Python 代码?


在这里我跟你说下 pdb 常常会用到的几个命令的意思:


1、p + 参数 :查看参数的值

2、n :单步跳过

3、s :单步进入

4、c :继续执行

5、w :显示上下文信息

6、a :查看函数的参数列表

7、ll : 列出当前的源码

8、b : 设置断点

9、q : 退出 debug


比如现在我们想知道参数 name 的值是什么,我们就可以这样:


如何使用 pdb 来性感 debug 你的 Python 代码?


显示参数:


如何使用 pdb 来性感 debug 你的 Python 代码?


显示上下文信息:


如何使用 pdb 来性感 debug 你的 Python 代码?


执行当前代码(单步进入):


如何使用 pdb 来性感 debug 你的 Python 代码?


继续执行:


如何使用 pdb 来性感 debug 你的 Python 代码?


在 debug 的过程中,你还可以修改参数的值,比如把 name 直接改成 sb:


如何使用 pdb 来性感 debug 你的 Python 代码?


如何使用 pdb 来性感 debug 你的 Python 代码?


列出当前的源码:


如何使用 pdb 来性感 debug 你的 Python 代码?


我刚给你演示的这些是在 Python3.8 版本下执行的,如果你用的是 Python 3.7 以下的版本,是用不了 breakpoint 这个函数的:


如何使用 pdb 来性感 debug 你的 Python 代码?


所以如果想要在 Python3.7 以下的版本使用 pdb ,那么你就需要自行导入了,并且你要打断点的话应该调用的是 set_trace():


如何使用 pdb 来性感 debug 你的 Python 代码?


那么这个时候,你就可以在 Python3.7 以下的版本使用 pdb 了:


如何使用 pdb 来性感 debug 你的 Python 代码?


当然,你还可以什么断点都不设置,使用命令的方式执行 pdb ,比如我们把刚刚的断点都去掉:


如何使用 pdb 来性感 debug 你的 Python 代码?


接着我们通过 pdb 命令来执行它:


python3 -m pdb xxx.py


如何使用 pdb 来性感 debug 你的 Python 代码?


这时候可以看到,它是直接从第一行开始打断点:


如何使用 pdb 来性感 debug 你的 Python 代码?


哦对了,如果你使用 VIM 编辑器的话,可以使用 repl 插件结合 ipdb 实现调试,像我这样:


如何使用 pdb 来性感 debug 你的 Python 代码?


ok,以上,希望对你有帮助,我们下回见,peace!


如何使用 pdb 来性感 debug 你的 Python 代码?


分享到:


相關文章: