找回密码
 立即注册
Qt开源社区 门户 查看内容

Linux 黑乎乎的命令行下,如何调试 Python?

2019-9-14 05:35| 发布者: admin| 查看: 520| 评论: 0

摘要: 一般开发者都是在 IDE 中进行程序的调试,当然,有 IDE 的话,当然首选 IDE 进行调试。但是,有时我们的业务场景,限制只能在 Linux 命令行模式进行调试。这时该怎么办呢?今天,就给大家介绍一个 Linux 下调试 Pyth ...
一般开发者都是在 IDE 中进行程序的调试,当然,有 IDE 的话,当然首选 IDE 进行调试。

但是,有时我们的业务场景,限制只能在 Linux 命令行模式进行调试。

这时该怎么办呢?

今天,就给大家介绍一个 Linux 下调试 Python 程序的工具。

pdb简介


pdb 调试器是 Python 标准库提供的,因此最为方便,不需要安装其他组件,直接 import 后就能使用。

pdb 调试器提供了调试所需的大多数功能,如断点、单行步进、堆栈帧的检查等等。

常用参数

l # 查看运行到哪行代码
n # 单步运行,跳过函数
s # 单步运行,可进入函数
p 变量 # 查看变量值
b 行号 # 断点设置到第几行
b # 显示所有断点列表
cl 断点号 # 删除某个断点
cl # 删除所有断点
c # 跳到下一个断点
r # return 当前函数
exit # 退出

使用示例


本文 Python 环境:Python 3.5.2

我们先准备一小段演示程序:
# -*- coding: utf-8 -*-

def add(a, b):
    return a + b

if __name__ == '__main__':
    print("===start===")
    c = add(1, 3)
    print("===end===")

使用方法 1:

运行 pdb 的最简单方法是从命令行,将程序作为参数传递来调试。
$ python -m pdb test_pdb.py

这时,就开始单步执行了。



这种方法对代码没有侵入性,但是每次都需要设置断点。

使用方法 2:

在代码头部引入 pdb,然后可以在代码里,通过 pdb.set_trace() 来设置断点:
# -*- coding: utf-8 -*-
import pdb

def add(a, b):
    pdb.set_trace()
    return a + b

if __name__ == '__main__':
        print("===start===")
        pdb.set_trace()
        c = add(1, 3)
        print("===end===")

此时,运行程序,就会自动跳转到设置的断点处:


总结


没了图形化页面,调试只能这么来了,不过还好,pdb 使用看着不难吧。

其实还有一些增强的调试器,比如 IPython 的 ipdb 和 pdb++,它们一般都提供了更好的用户体验,添加了有用的额外功能,例如语法突出高亮、更好的回溯和自省。

后面有机会再给大家分享吧!



推荐阅读

1. 做IT的,这些安全知识你不得不懂!

2. 小小快递地址带来的思考

3. 写作真的是面向未来的技能吗?

4. 从URL输入到页面展现到底发生什么?

不正经程序员




----------------------------------------------------------------------------------------------------------------------
我们尊重原创,也注重分享,文章来源于微信公众号:python爬虫人工智能大数据,建议关注公众号查看原文。如若侵权请联系qter@qter.org。
----------------------------------------------------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了