python的调试器_python 调试器

python 调试器:

使用 pdb 进行调试

pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量的值等。pdb 提供了一些常用的调试命令,详情见表 1。

表 1. pdb 常用命令

pdb.set_t

下面结合具体的实例讲述如何使用 pdb 进行调试。

清单 1. 测试代码示例vim pdbtest.py

#!/usr/bin/env python

import pdb

a = "aapdb"

pdb.set_trace()

b = "bbbaa"

c = "cccaaa"

final = a + b + c

print final

python  pdbtest.py

> /root/pdbtest.py(7)()

-> b = "bbbaa"

(Pdb)

(Pdb) c

aapdbbbbaacccaaa

开始调试:直接运行脚本,会停留在 pdb.set_trace() 处,选择 n+enter 可以执行当前的 statement。在第一次按下了 n+enter 之后可以直接按 enter 表示重复执行上一条 debug 命令。

清单 2. 利用 pdb 调试python  pdbtest.py

> /root/pdbtest.py(7)()

-> b = "bbbaa"

(Pdb) list

2

3

4     import pdb

5     a = "aapdb"

6     pdb.set_trace()

7  -> b = "bbbaa"

8     c = "cccaaa"

9     final = a + b + c

10     print final

[EOF]

(Pdb) n

> /root/pdbtest.py(8)()

-> c = "cccaaa"

(Pdb) n

> /root/pdbtest.py(9)()

-> final = a + b + c

(Pdb) n

> /root/pdbtest.py(10)()

-> print final

(Pdb) n

aapdbbbbaacccaaa

--Return--

> /root/pdbtest.py(10)()->None

-> print final

(Pdb)

退出 debug:使用 quit 或者 q 可以退出当前的 debug,但是 quit 会以一种非常粗鲁的方式退出程序,其结果是直接 crash。

race()# 开启pdb提示

或者

或者(输入 c 开始执行脚本)

python -mpdb script.py

在输入-计算-输出循环(注:REPL,READ-EVAL-PRINT-LOOP的缩写)环境下,可以有如下操作:c or continue

q or quit

l or list, 显示当前步帧的源码

w or where,回溯调用过程

d or down, 后退一步帧(注:相当于回滚)

u or up, 前进一步帧

(回车), 重复上一条指令

其余的几乎全部指令(还有很少的其他一些命令除外),在当前步帧上当作python代码进行解析。

如果你觉得挑战性还不够的话,可以试下smiley,-它可以给你展示那些变量而且你能使用它来远程追踪程序。

iPDB是一个极好的工具,我已经用它查出了很多匪夷所思的bug。

pip install ipdb 安装该工具,然后在你的代码中import ipdb; ipdb.set_trace(),然后你会在你的程序运行时,获得一个很好的交互式提示。它每次执行程序的一行并且检查变量。

更好的调试器

pdb的直接替代者:

ipdb(easy_install ipdb) – 类似ipython(有自动完成,显示颜色等)

pudb(easy_install pudb) – 基于curses(类似图形界面接口),特别适合浏览源代码

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值