分享

使用PDB调试Python程序的完整实践

 icecity1306 2018-03-21

介绍

在开发简单程序的时候,可以通过加入print或是log的方式进行程序的调试,但是对于复杂的程序这种方式往往比较困难,这时就需要引入一种可以进行单步调试以及可以方便查看变量的方法来进行程序问题的排查,Python 的pdb就是用来解决这个问题的。

常用命令

命令 用途
break 或 b 设置断点
continue 或 c 继续执行程序, 或是跳到下个断点
list 或 l 查看当前行的代码段
step 或 s 进入函数
return 或 r 执行代码直到从当前函数返回
exit 或 q 中止并退出
next 或 n 执行下一行
p 或! 打印变量的值,例如p a
help 或 h 帮助

实战

在代码中嵌入pdb代码

# utils.py
def add(a,b):
    return a+b

# main.py
import utils

def cal(a,b):
    import pdb;pdb.set_trace()  #引入pdb代码片段,不需要时,可以注掉
    c=utils.add(a,b)
    print c

if __name__=='__main__':
   cal(3,4)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

开始调试

root@native-sunaihua-5-25-18:~/pdb_test# python main.py   #开始
> /root/pdb_test/main.py(5)cal()
-> c=conf.add(a,b)
(Pdb) s                                                   #进入调用函数
--Call--
> /root/pdb_test/conf.py(1)add()
-> def add(a,b):
(Pdb) l                                                    #查看代码
  1  -> def add(a,b):
  2         return a+b
[EOF]
(Pdb) b 2                                                  #设置断点
Breakpoint 1 at /root/pdb_test/conf.py:2
(Pdb) c                                                    #继续执行到下一个断点
> /root/pdb_test/conf.py(2)add()
-> return a+b
(Pdb) n                                                    #执行下一行         
--Return--
> /root/pdb_test/conf.py(2)add()->7
-> return a+b
(Pdb) n
> /root/pdb_test/main.py(6)cal()
-> print c
(Pdb) n
7
--Return--
> /root/pdb_test/main.py(6)cal()->None
-> print c
(Pdb) p c                                                   #查看c变量的值      
7
(Pdb) q                                                     #退出
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多