pdb调试python代码

本来只知道可以用pycharm,eclipse这类东西打断点。今天同事告诉我才知道原来python本身也有工具pdb,这个名字应该来自c语言的gdb吧=。=

使用很简单,import pdb即可,在需要开始断点的地方加上 pdb.set_trace()即可。

调试中命令

b 打断点,常用于循环,这样下次循环可以在此处停住
c 继续执行直到下一个断点
l 查看当前代码段
s 进入函数
r 一直执行直到从进入的函数跳出
q 终止
n 执行下一行
pp 打印变量值
使用见下面一块log

wujingcideMacBook-Pro:my wujingci$ python test.py
> /Users/wujingci/PycharmProjects/my/test.py(8)<module>()
-> a[0] = a[0] + i
(Pdb) l
  3     def add(num,base):
  4         result = num + base
  5         return result
  6     for i in range(10):
  7         pdb.set_trace()
  8  ->     a[0] = a[0] + i
  9         a[1] = add(a[1],i*1024)
 10         a[2] = add(a[2],2048*i)
 11         a[3] = a[3] + i*4096
 12
[EOF]
(Pdb) n
> /Users/wujingci/PycharmProjects/my/test.py(9)<module>()
-> a[1] = add(a[1],i*1024)
(Pdb) pp a
[1, 2, 3, 4]
(Pdb) b
(Pdb) c
> /Users/wujingci/PycharmProjects/my/test.py(7)<module>()
-> pdb.set_trace()
(Pdb) c
> /Users/wujingci/PycharmProjects/my/test.py(8)<module>()
-> a[0] = a[0] + i
(Pdb) l
  3     def add(num,base):
  4         result = num + base
  5         return result
  6     for i in range(10):
  7         pdb.set_trace()
  8  ->     a[0] = a[0] + i
  9         a[1] = add(a[1],i*1024)
 10         a[2] = add(a[2],2048*i)
 11         a[3] = a[3] + i*4096
 12
[EOF]
(Pdb) pp a
[2, 1026, 2051, 4100]
(Pdb) n
> /Users/wujingci/PycharmProjects/my/test.py(9)<module>()
-> a[1] = add(a[1],i*1024)
(Pdb) l
  4         result = num + base
  5         return result
  6     for i in range(10):
  7         pdb.set_trace()
  8         a[0] = a[0] + i
  9  ->     a[1] = add(a[1],i*1024)
 10         a[2] = add(a[2],2048*i)
 11         a[3] = a[3] + i*4096
 12
[EOF]
(Pdb) s
--Call--
> /Users/wujingci/PycharmProjects/my/test.py(3)add()
-> def add(num,base):
(Pdb) l
  1     import pdb
  2     a = [1,2,3,4]
  3  -> def add(num,base):
  4         result = num + base
  5         return result
  6     for i in range(10):
  7         pdb.set_trace()
  8         a[0] = a[0] + i
  9         a[1] = add(a[1],i*1024)
 10         a[2] = add(a[2],2048*i)
 11         a[3] = a[3] + i*4096
(Pdb) n
> /Users/wujingci/PycharmProjects/my/test.py(4)add()
-> result = num + base
(Pdb) r
--Return--
> /Users/wujingci/PycharmProjects/my/test.py(5)add()->3074
-> return result
(Pdb) l
  1     import pdb
  2     a = [1,2,3,4]
  3     def add(num,base):
  4         result = num + base
  5  ->     return result
  6     for i in range(10):
  7         pdb.set_trace()
  8         a[0] = a[0] + i
  9         a[1] = add(a[1],i*1024)
 10         a[2] = add(a[2],2048*i)
 11         a[3] = a[3] + i*4096
 (Pdb) q
Traceback (most recent call last):
  File "test.py", line 9, in <module>
    a[1] = add(a[1],i*1024)
  File "test.py", line 5, in add
    return result
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/bdb.py", line 53, in trace_dispatch
    return self.dispatch_return(frame, arg)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/bdb.py", line 91, in dispatch_return
    if self.quitting: raise BdbQuit
bdb.BdbQuit
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值