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

猜你喜欢

转载自blog.csdn.net/weixin_41571449/article/details/79619912