Python内置debug库: pdb用法详解


0. 引言

pdb(Python Debugger)是Python的内置调试器,使用pdb进行调试可以帮助你深入了解程序的执行流程和变量状态,有助于快速定位和解决问题。通过上述常用命令和示例代码,你可以有效地在Python项目中使用pdb进行调试。

下面是pdb的一些常用功能和用法的详细介绍。

1. 基本用法

1.1 设置断点

要使用pdb调试Python代码,可以在需要调试的地方插入pdb.set_trace(),程序运行到这一行时会暂停,进入调试模式。

例子

import pdb

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

def main():
    x = 10
    y = 20
    pdb.set_trace()  # 设置断点
    result = add(x, y)
    print(f"Result: {result}")

if __name__ == "__main__":
    main()

运行程序后,程序会在pdb.set_trace()处暂停,进入交互式调试模式。
在这里插入图片描述

1.2 通过命令行启动 pdb

可以直接从命令行启动pdb进行调试(此时不要求打断点):

python -m pdb your_script.py

此时会停留在代码第一行,然后你就可以依次 debug 所有的 python 代码。

2. 常用命令

2.1 n (next)

执行下一行代码,不会进入函数内部。

(Pdb) n

2.2 s (step)

进入当前行调用的函数。

(Pdb) s

2.3 c (continue)

继续执行程序,直到遇到下一个断点。

(Pdb) c

2.4 l (list)

显示当前代码行以及周围的代码。

(Pdb) l

2.5 p (print)

打印变量的值。

(Pdb) p x

2.6 h (help)

显示帮助信息。

(Pdb) h

2.7 b (break)

设置断点,可以在指定行或指定函数处设置断点。

(Pdb) b 12  # 在第12行设置断点
(Pdb) b add  # 在add函数处设置断点

2.8 cl (clear)

清除断点。

(Pdb) cl 1  # 清除编号为1的断点

2.9 q (quit)

退出调试器。

(Pdb) q

3. 例子

以下是一个完整的例子,展示了如何使用pdb进行调试:

import pdb

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

def multiply(a, b):
    return a * b

def main():
    x = 10
    y = 20
    pdb.set_trace()  # 设置断点
    sum_result = add(x, y)
    mul_result = multiply(x, y)
    print(f"Sum: {sum_result}")
    print(f"Product: {mul_result}")

if __name__ == "__main__":
    main()

运行程序并调试:

  1. 运行程序: 直接运行上面的代码,程序会在pdb.set_trace() 的下一行处暂停。

  2. 查看代码: 使用l命令查看当前代码行和周围的代码。

(Pdb) l

在这里插入图片描述

  1. 打印变量值: 使用p命令打印变量的值。
(Pdb) p x
10
(Pdb) p y
20
  1. 单步执行: 使用n命令执行下一行代码。
(Pdb) n
> /xx/test_pdb.py(11)main()
-> print(f"Result: {result}")
  1. 继续执行: 使用c命令继续执行程序,直到遇到下一个断点或程序结束。

欢迎关注本人,我是喜欢搞事的程序猿; 一起进步,一起学习;

欢迎关注知乎/CSDN:SmallerFL

也欢迎关注我的wx公众号(精选高质量文章):一个比特定乾坤
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

SmallerFL

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

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

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

打赏作者

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

抵扣说明:

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

余额充值