从零开始发布前端代码到服务器上_超详细讲解如何使用 pdb 在服务器上调试代码...

Pycharm 的图形化界面虽然好用,但是在某些场景中,是无法使用的。而 Python 本身已经给我们提供了一个调试神器 -- pdb,可能你还不知道它,为了讲解这个神器,我写了这篇文章来帮助你轻松的理解它。

1. 准备文件

在调试之前先将这两个文件准备好(做为演示用),并放在同级目录中。

utils.py

def sum(mylist):    result = 0    for item in mylist:        result += item    return result

pdb_demo.py

import utilsdef myfunc(mylist):    result = utils.sum(mylist)    print(result)if __name__ == '__main__':    print("----start----")    myfunc([1,2,3,4])    print("----end-----")

2. 进入调试模式

主要有两种方法

做为脚本调用,方法很简单,就像正常执行python脚本一样,只是多加了-m pdb

ptyhon -m pdb pdb_demo.py

使用这个方式进入调试模式,会在脚本的第一行开始单步调试。

29988a865460c49c1b697f6be94eae54.png

对于单文件的脚本并没有什么问题,如果是一个大型的项目,项目里有很多的文件,使用这种方式只能大大降低我们的效率。

一般情况下,都会直接在你需要的地方打一个断点,那如何打呢?

只需在你想要打断点的地方加上这两行。

import pdbpdb.set_trace()

然后执行时,也不需要再指定-m pdb了,直接python pdb_demo.py ,就会直接在这个地方暂停。

987d462840619f2a62667d84ff7dc74b.png

cbd79d319f604fdb0798fe65073104f2.png

3. 调试指令

熟悉 Pycharm 的人都知道,我们执行下一步,执行到下一个断点是

同样的,pdb 也需要你更多记这样的命令。

当你看到pdb模式的标识符 (Pdb)时,就可以输入这样的命令。

我在这里将这些指令按使用频度分为三个等级。

最常用

指令英文解释
nNext下一步
llist列出当前断点处源码
pprint打印变量
sstep into执行当前行,可以进入函数
rreturn运行完当前函数,返回结果
ccontinue执行到下一断点或者结束
bbreak设置断点
qquit退出程序

有时使用

指令英文解释
aargs列出当前函数的参数
pppprint一种可视化更好的打印
jjump跳到指定行
clclear清除断点
wwhere打印当前堆栈
uup执行跳转到当前堆栈的上一层
untuntil行数递增执行(忽略循环和函数)
lllonglist列出更多的源码
run/restartrun重新启动 debug(-m pdb)

几乎不用

指令英文解释
tbreaktemporary break临时断点
disable停用断点
enable启用断点
alias设置别名
unalias删除别名
whatis打印对象类型
ignore设置忽略的断点
source列出给定对象的源码

其上全部是我翻译自官方文档,原文在这里:https://docs.python.org/3/library/pdb.html

其实你大可不必死记这些命令,忘记的时候,只要敲入help并回车,就可以看所有的指令了。

031092775f507c655abb99647ee23a6f.png

4. 开始调试

这里就几个最常用的指定,来演示一遍。

472c9bb9a719111488817be2f27ce57f.png

这个调试过程,我加了些注释,你应该能够很轻易地理解这种调试方式。

今天pdb的调试内容大概就是这些,你学会了吗?

看到上面截图的时间了吧?是的,又是一个深夜写的文章。希望对你会有所帮助。

文末福利

本人原创的 《PyCharm 中文指南》一书前段时间一经发布,就火爆了整个 Python 圈,发布仅一天的时间,下载量就突破了 1000 ,并且在当天就在 Github 上就收获了数百的 star,截至目前,下载量已经破万。

这本书一共将近 200 页内含大量的图解制作之精良,值得每个 Python 工程师 人手一份。

24476d9b6b8c496cf1d57209a0fa6904.png

为方便你下载,我将这本书上传到 百度网盘上了,点赞 + 转发 本篇文章后可自行获取。

链接:https://pan.baidu.com/s/1-NzATHFtaTV1MQzek70iUQ密码:mft3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值