pdb — The Python Debugger

pdb,交互式的python程序源码调试工具,支持断点,单步调试等,总之,python程序的调试,用它就够了

我的调试方法

在进入现在的公司前,我还使用eclipse来编写软件,遇到比较复杂或者奇怪的问题时,一般可以在eclipse中设置断点,运行源码就可以调试了
进入现在的公司,一开始也是使用eclipse编码的,但在实际工作中,有时一个问题会跨越几个服务(项目),eclipse的调试功能貌似不再能够满足我的需求,从同事处得知,可以使用pdb进行调试,使用方法:在需要设置断点的代码行前面添加下面的代码

import pdb
pdb.set_trace()

程序运行到此等待你的指挥,另外还得知一个不错的IDE,pycharm我的另外一篇博客也有专门推荐过《使用IDE编写python代码》,自然而然的就更换了调试方式和IDE

pdb交互环境长啥样

编写如下的代码:

def see_hello(name):
    print("Hello, %s" % name)


def how_are_you():
    print("How are you?")


import pdb
pdb.set_trace()
if __name__ == "__main__":
    see_hello("anys")
    how_are_you()

在命令行敲入python test.py,会出现如下的界面:
这里写图片描述
这就是pdb的交互界面了,停在了pdb.set_trace()的下一行,接下来呢?敲入help,如下:
这里写图片描述
看不懂了吧?反正我是靠猜的

pdb命令列表

命令每次解释示例
h(elp) [command]查看帮助,不带任何参数时列出pdb全部的命令列表,如果带一个命令名称则输出该命令的帮助信息h;h cl
w(here)打印堆栈跟踪w
d(own)当前堆栈深入一层d
u(p)当前堆栈往上一层u
b(reak) [[filename:]lineno | function[, condition]]设置断点,可以指定某个文件的某行或者某个函数设置断点,不带任何参数时则列出当前全部的断点(仅通过b xx创建)b see_hello;b 16
tbreak [[filename:]lineno | function[, condition]]临时断点,参考b(reak)tb sello
cl(ear) [filename:lineno | bpnumber [bpnumber …]]清理断点cl 16
disable [bpnumber [bpnumber …]]禁用断点disable 1
enable [bpnumber [bpnumber …]]与disable相反enable 1
ignore bpnumber [count]忽略count次,如果count为非0,则每次执行到断点处count减1,count为0时停住ignore 1 2
condition bpnumber [condition]设置断点的条件,只有满足条件时才会停住condition 1 x>0
commands [bpnumber]为断点设置一系列的命令,输入end结束commands 1
s(tep)执行当前行,停在函数调用或者函数调用的下一行参数s
n(ext)执行到下一行或者到returnn
unt(il)xxxxxx
r(eturn)执行到当前函数返回r
c(ont(inue))执行到下一个断点时停住c
j(ump) lineno跳转到lineno继续执行j 16
l(ist) [first[, last]]列出指定范围内的源码l
a(rgs)打印当前函数的全部参数a
p expression打印表达式的值p x+y
alias [name [command]]给命令起个别名alias u until
unalias name取消别名unalias u
q(uit)退出q

下面是几个例子:
这里写图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值