Python pdb 代码调试调试

转载请注明作者和出处: http://blog.csdn.net/john_bh/

1. pdb 介绍

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

两种使用方法:

  1. 非侵入式方法(不用额外修改源代码,在命令行下直接运行就能调试)
    python -m pdb Test.py
    
  2. 侵入式方法(需要在被调试的代码中添加一行代码然后再正常运行代码)
    import pdb
    pdb.set_trace()
    
    运行代码,程序会自动在pdb.set_trace()暂停并进入pdb调试环境,可以用命令p查看变量,或者用命令c继续运行。

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

(Pdb) 

2. 常用命令

命令功能
h帮助
l(list)列出源码,如果不带参数,则列出当前行周围的 11 行,或继续前一个列表。
ll列出当前函数或帧的所有源代码。
b(break)添加断点,列出当前所有断点,和断点执行到统计次数
b line_no当前脚本的line_no行添加断点
b filename:line_no脚本filename的line_no行添加断点
b function在函数function的第一条可执行语句处添加断点
tbreak临时断点,在第一次命中时会自动删除。它的参数与 break 相同
cl清除断点
p(print)输出expression的值,打印变量值
c(continue)继续执行,直到遇到下一条断点,非逐行调试命令
r(return)继续运行,直到当前函数返回
a(args)列出当前执行函数的参数,查看函数参数
interact启动交互式解释器
whatis打印变量类型
w(where)打印当前执行堆栈
s(step)执行下一条命令,如果本句是函数调用,则s会执行到函数的第一句
n(next)执行下一条语句,如果本句是函数调用,则执行函数,接着执行当前执行语句的下一条。
run重新启动debug,相当于restart
q(quit)退出debug,退出pdb

3. 代码

import pdb

class MyObj:

    def __init__(self, num_loops):
        self.count = num_loops

    def go(self):
        for i in range(self.count):
            pdb.set_trace()
            print(i)
        return

if __name__ == '__main__':
    MyObj(5).go()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值