在jupyter中使用python pdb调试代码

目前在jupyter中还没有可视化调试界面,而python pdb是代码调试的一个不错的选择,它支持设置断点和单步调试,使用起来非常方便

pdb常用命令

参数说明实例
hhelp 帮助文档h b: 查看 b 命令的文档
bbreak 打断点b:查看所有断点
b 5: 给第5行打断点
b function_name:当前文件名为 function_name 的函数打断点
b test1.A.add:在 import test1 文件的 A 类的 add 方法打断点
b A.add:在 A 类的 add 方法打断点
tbreak设置临时断点,运行完毕后会删除这个断点设置方法和 b 一样
wwhere 查看当前执行的位置w
clclear 清除断点cl:清除所有断点
cl 2:清除断点列表中编号为2断点
cl test.py:18:清除 test.py 文件编号为18断点
cl test1:18:清除 import test1 文件编号为18的断点
condition给断点设置条件condition 1 i==4:当断点列表中编号为1的断点中变量 i 等于 4 的时候执行断点
sstep 执行下一条命令,遇到函数则进入参考下面执行效果
nnext 执行下一条语句,遇到函数不进入参考下面执行效果
ccontinue 继续执行,直到遇到下一条断点参考下面执行效果
rreturn 执行当前运行函数到结束参考下面执行效果
argsargs 打印当前函数的所有参数及参数值参考下面执行效果
pprint 打印出当前所在函数中的变量或表达式结果p a:打印变量a
p dir(a):打印变量a所有属性
pp格式化打印出来的结果pp a:格式化打印变量a
run重新执行
qquit 退出pdb调试

pdb进阶阶命令

参数说明实例
llist 列出当前或范围周围代码l 5, 20: 列出5到20行代码
l: 查看当前位置的代码
disable停用断点disable:清除所有断点
disable 2:清除断点列表中编号为2断点
disable test.py:18:清除 test.py 文件编号为18断点
disable test1:18:清除 import test1 文件编号为18的断点
enable启动断点用法和disable一样
ignore bpnumber忽略某个断点几次ignore 1 3:忽略断点列表中第1个断点3次,一般循环中用,
commands给断点写一个脚本执行commands 1:给断点编号为1的的断点写脚本
untuntil 执行到下一行参考下面 unt 执行效果
jjump 跳转至指定程序行,如果是前行,则忽略中间行代码。
如果是后退,状态重设为回退行状态
注意:是跳转到不是执行
alias自定义一个函数,参数可由%1,%2来表示。
类似 Python 的 lambda
unalias删掉别名函数unalias name

实例1

代码如下:

import pdb
pdb.set_trace()
def mul(a, b,e = 88):
    c = a * b
    return c

for i in range(10):
    a = i
    b = i + 1
    r = mul(a, b)
    print(r)

使用condition给编号为6的断点设置条件为i==3
在这里插入图片描述
给第8行设置断点,然后输入n单步执行(遇到函数不进入):
在这里插入图片描述

给第8行设置断点,但函数位置输入s遇到函数进入,然后输入r,直接执行到函数尾部:

在这里插入图片描述
输入args打印当前函数的所有参数及参数值,注意:只有在函数内部该命令才有效
在这里插入图片描述
使用commands 22为编号为22的断点编写脚本
在这里插入图片描述
使用unt命令执行到下一行
在这里插入图片描述

示例2

代码如下:

import pdb
pdb.set_trace()
class A():
    def __init__(self,value):
        self.value = value
    def printParam(self):
        print(self.value)
v = 3
a = A(v)
a.printParam()

输入p dir(a) 打印a的所有属性:
在这里插入图片描述
输入l列出当前位置的代码
在这里插入图片描述

参考文档
python pdb 代码调试 - 最全最详细的使用说明

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雷恩Layne

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值