Python Pdb调试

本文介绍了Python的pdb调试工具,适用于复杂程序的调试。内容包括pdb的基本命令,通过一个具体的调试例子展示了如何设置断点、单步执行、查看变量值,并提供了退出调试的步骤。通过pdb,开发者能更有效地排查程序问题。
摘要由CSDN通过智能技术生成

Python PDB调试

简介

在开发简单程序时,可以通过加入Print()或者log的方式进行辅助程序调试,但是对于复杂的程序这种调试方式往往比较困难,因此需要一种可以单步调试以及可以方便查看变量的方法来进行程序问题的排查。在Linux发行版中使用vim写过C/C++并且使用gdb进行调试的人可能对于上手pdb调试机会更加容易一些,当然其他人也可以很快上手Python的pdb调试。


基本命令

完整命令简写命令描述
argsa打印当前函数的参数
breakb设置断点
clearcl清除断点
condition设置条件断点
continuec或者cont继续运行,知道遇到断点或者脚本结束
disable禁用断点
enable启用断点
helph查看pdb帮助
ignore忽略断点
jumpj跳转到指定行数运行
listl列出脚本清单
nextn执行下条语句,遇到函数不进入其内部
pp打印变量值,也可以用print
quitq退出 pdb
returnr一直运行到函数返回
tbreak设置临时断点,断点只中断一次
steps执行下一条语句,遇到函数进入其内部
wherew查看所在的位置
!在pdb中执行语句

调试例子

代码一:

utils.py

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

代码二:

import utils
import pdb

def call(a, b):
    pdb.set_trace()
    c = utils.add(a, b)
    print(c)

if __name__ == '__main__':
    call(3, 4)

代码很简单在此不过多描述关键点在于:

import pdb

pdb.set_trace()             #在终端进行调试,代码遇到这句话会停下来,类似断点功能

调试过程
D:\exercise\pdb>python36 main.py
> d:\exercise\pdb\main.py(6)call()
-> c = utils.add(a, b)
(Pdb) l
  1     import utils
  2     import pdb
  3
  4     def call(a, b):
  5         pdb.set_trace()
  6  ->     c = utils.add(a, b)
  7         print(c)
  8
  9     if __name__ == '__main__':
 10         call(3, 4)
[EOF]

在bash中调用call函数,首先会停留在pdb所设置的断点的下一行,等待接下来用户的输入此时输入n会进行单步调试执行下一行

(Pdb) n
> d:\exercise\pdb\main.py(7)call()
-> print(c)

若想看此时的变量情况,可以使用p打印出某个变量的值

(Pdb) n
> d:\exercise\pdb\main.py(7)call()
-> print(c)(Pdb) p c
7

中途退出函数只需在bash中输入q便可退出程序

(Pdb) q
Traceback (most recent call last):
  File "main.py", line 10, in <module>
    call(3, 4)
  File "main.py", line 7, in call
    print(c)
  File "main.py", line 7, in call
    print(c)
  File "C:\Program Files\Python36\lib\bdb.py", line 51, in trace_dispatch
    return self.dispatch_line(frame)
  File "C:\Program Files\Python36\lib\bdb.py", line 70, in dispatch_line
    if self.quitting: raise BdbQuit
bdb.BdbQuit

基本过程如上所述,更多知识仍需各位亲自去探索,路漫漫其修远兮!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值