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

 

介绍

在开发简单程序的时候,可以通过加入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)

开始调试

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                                                     #退出

出处:https://blog.csdn.net/eric_sunah/article/details/56484912

猜你喜欢

转载自blog.csdn.net/JackLiu16/article/details/81369553