Python内置debug库pdb用法示例详解

 更新时间:2024年11月07日 11:31:36   作者:SmallerFL  
这篇文章主要介绍了Python内置debug库pdb用法的相关资料,Python的内置调试器pdb可以有效帮助开发者掌握程序执行流程和变量状态,通过插入pdb.set_trace()设置断点,或直接从命令行启动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()

运行程序并调试:

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

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

(Pdb) l

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

总结 

到此这篇关于Python内置debug库pdb用法的文章就介绍到这了,更多相关Python内置debug库:pdb用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 一文深入了解Python中的property动态属性机制

    一文深入了解Python中的property动态属性机制

    作为Python中最为强大也最为神秘的概念之一,元类(metaclass)赋予了开发者"修改类创建过程"的超能力,而在我们正式踏入元类殿堂之前,必须首先掌握一个基础而重要的概念property动态属性,本文深入探讨了Python中的property动态属性机制,需要的朋友可以参考下
    2026-02-02
  • python使用tcp实现局域网内文件传输

    python使用tcp实现局域网内文件传输

    这篇文章主要介绍了python使用tcp实现局域网内文件传输,文件包括文本,图片,视频等,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • 在pandas中遍历DataFrame行的实现方法

    在pandas中遍历DataFrame行的实现方法

    这篇文章主要介绍了在pandas中遍历DataFrame行的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Python自动重新加载模块详解(autoreload module)

    Python自动重新加载模块详解(autoreload module)

    这篇文章主要介绍了Python自动重新加载模块详解(autoreload module),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • python中bisect模块用法实例

    python中bisect模块用法实例

    这篇文章主要介绍了python中bisect模块用法实例,以实例形式介绍了bisect模块中几种常见函数的用法,非常具有实用价值,需要的朋友可以参考下
    2014-09-09
  • OpenCV图像梯度处理与边缘检测的实战指南

    OpenCV图像梯度处理与边缘检测的实战指南

    本文主要介绍了OpenCV图像梯度处理与边缘检测的实战指南,包括自定义卷积核、Sobel、Laplacian和Canny算法,文中通过示例代码介绍的非常详细,感兴趣的可以了解一下
    2025-07-07
  • 使用django自带的user做外键的方法

    使用django自带的user做外键的方法

    这篇文章主要介绍了使用django自带的user做外键的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 如何查看Mac本机的Python3安装路径

    如何查看Mac本机的Python3安装路径

    这篇文章主要介绍了如何查看Mac本机的Python3安装路径问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 对Python3.6 IDLE常用快捷键介绍

    对Python3.6 IDLE常用快捷键介绍

    今天小编就为大家分享一篇对Python3.6 IDLE常用快捷键介绍,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • Python常见模块及其用法示例详解

    Python常见模块及其用法示例详解

    模块导入是Python开发中的一个重要环节,但如果不小心,可能会遇到各种错误,这篇文章主要给大家介绍了关于Python常见模块及其用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-07-07

最新评论