python debugger(python 自带的调试器)

本文不涉及使用IDE进入调试模式

breakpoint() 函数

在你要调试的部分,使用breakpoint()

n = 1

if n:
    try:
        a = 1
        for item in range(1, 100):
            breakpoint()   # 进入debugger
    except Exception as e:
        print(e)
else:
    print(231)

注意 breakpoint() 函数只能在python 3.7或以上版本上使用
点进源码可以看到

breakpoint函数

在python 3.6中测试 使用 breakpoint() 函数,会抛出异常

NameError: name 'breakpoint' is not defined

那在python 3.7版本以下怎么进入 debugger 呢?

pdb 模块

这时我们可以导入 pdb模块

pdb 模块定义了一个交互式源代码调试器,用于 Python 程序。它支持在源码行间设置(有条件的)断点和单步执行,
检视堆栈帧,列出源码列表,以及在任何堆栈帧的上下文中运行任意 Python 代码。
它还支持事后调试,可以在程序控制下调用。

pdb有2种用法:

  1. 非侵入式方法(在命令行下直接运行就能调试)
python3 -m pdb filename.py
  1. 侵入式方法(需要在被调试的代码中添加一行代码然后再正常运行代码)
import pdb
pdb.set_trace()

这里主要介绍一下第2种

  • 在代码中引入
import pdb
n = 1

if n:
    try:
        a = 1
        for item in range(1, 100):
            pdb.set_trace()   # 进入debugger
    except Exception as e:
        print(e)
else:
    print(231)

执行py文件, 进入交互界面(breakpoint()函数 和 pdb模块的交互界面一样)

当你在命令行看到下面这个提示符时,说明已经正确打开了pdb

(Pdb)

然后就可以开始输入pdb命令了
交互界面
下面是pdb的常用命令

debug 时一些常用命令

  1. 查看源代码

    l
    

    说明: 查看当前位置前后11行源代码(多次会翻页)当前位置在代码中会用–>这个符号标出来

    ll
    

    说明:查看当前函数或框架的所有源代码

  2. 打印变量值

    p expression
    

    参数:expression Python表达式

  3. 逐行调试命令

    s
    

    说明:执行下一行(能够进入函数体)

    n
    

    说明:执行下一行(不会进入函数体)

    r
    

    说明:执行下一行(在函数中时会直接执行到函数返回处)

  4. 查看函数参数

    a
    

    说明: 在函数中时打印函数的参数和参数的值

  5. 打印变量类型

    whatis expression
    

    说明: 打印表达式的类型,常用来打印变量值

  6. 启动交互式解释器

    interact
    

    说明:启动一个python的交互式解释器,使用当前代码的全局命名空间(使用ctrl+d返回pdb)

  7. 打印堆栈信息

    w
    

    说明:打印堆栈信息,最新的帧在最底部。箭头表示当前帧。

  8. 退出pdb

    q
    

    说明:退出调试

关于python debug 的小技巧就分享到这了

参考文档: python的调试器

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值