电脑,python环境
01首先打开电脑后,打开终端,我这里以调试debug.py文件做说明,简单介绍python的pdb调试。为了演示,先用cat命令查看一下debug.py的内容。
02我这里用的python3的环境,在终端里输入如图显示python3 -m pdb debug.py命令。就是就是用python的pdb模块调试debug.py文件代码。
03进入调试后,在终端里输入小写字母l,就是英文单词list的缩写,意思就是列出代码内容。如果显示。
04在终端里输入小写字母n,就是英文单词next的缩写,意思就是执行下一行代码。
05在终端里输入小写字母p x,p就是英文单词print的缩写,意思就是打印变量x的值。
06在终端里输入小写字母s,s就是英文单词s的缩写,进入函数内部调试。
07在终端里输入小写字母a,a就是英文单词arguments(参数)的缩写,会打印显示函数所有变量的值。
08在终端里输入小写字母c,就是英文单词continue的缩写,意思就是继续执行代码一直结束,然后重新进入调试。
09在终端里输入小写字母b和阿拉伯数字6,b就是英文单词break的缩写,意思就是在第6行代码打个断点。
10在终端里输入小写字母q,q就是英文单词quit的缩写,意思就是退出调试。
本文讨论在没有方便的IDE工具可用的情况下,使用pdb调试python程序源码例子
例如,有模拟税收计算的程序:
#!/usr/bin/python
def debug_demo(val):
if val <= 1600 :
print "level 1"
print 0
elif val <= 3500 :
print "level 2"
print (val - 1600) * 0.05
elif val <= 6500 :
print "level 3"
print (val - 3500) * 0.10 + (3500-1600) * 0.05
else:
print "level 4"
print (val - 6500) * 0.20 + (6500-3500) * 0.10 + (3500-1600) * 0.05
#~def debug_demo
if __name__ == "__main__":
debug_demo(4500)
debug_demo函数计算4500的入账所需的税收。
如何调试?
1.加入断点
在需要插入断点的地方,加入红色部分代码:如果_DEBUG值为True,则在该处开始调试(加入_DEBUG的原因是为了方便打开/关闭调试)。
#!/usr/bin/python
_DEBUG=True
def debug_demo(val):
if _DEBUG == True:
import pdb
pdb.set_trace()
if val <= 1600 :
print "level 1"
print 0
elif val <= 3500 :
print "level 2"
print (val - 1600) * 0.05
elif val <= 6500 :
print "level 3"
print (val - 3500) * 0.10 + (3500-1600) * 0.05
else:
print "level 4"
print (val - 6500) * 0.20 + (6500-3500) * 0.10 + (3500-1600) * 0.05
#~def debug_demo
if __name__ == "__main__":
debug_demo(4500)
2.开始运行调试
运行程序./debug_demo.py,得到
>/usr/local/qspace/user_network/debug_demo.py(7)debug_demo()
->if val <= 1600 :
(Pdb)
->val <= 1600 : 指示当前执行的语句,(Pdb)等待你的调试指令. pdb的指令很丰富,输入h指令可以查看指令的使用方法。下面简单介绍常用指令:
查看代码上下文,l(小写L)
(Pdb) l
2 _DEBUG=True
3 def debug_demo(val):
4 if _DEBUG == True:
5 import pdb
6 pdb.set_trace()
7->if val <= 1600 :
8 print "level 1"
9 print 0
10 elif val <= 3500 :
11 print "level 2"
12 print (val - 1600) * 0.05
(Pdb)
左边是行号,右边是代码正文。
监视变量:p 变量名
(Pdb) p val
4500
(Pdb)
单步执行: n
->elif val <= 3500 :
(Pdb) l
5 import pdb
6 pdb.set_trace()
7 if val <= 1600 :
8 print "level 1"
9 print 0
10->elif val <= 3500 :
11 print "level 2"
12 print (val - 1600) * 0.05
13 elif val <= 6500 :
14 print "level 3"
15 print (val - 3500) * 0.10 + (3500-1600) * 0.05
加入断点:b 行号
(Pdb) b 14
运行到断点: c
(Pdb) c
>/*****
->print "level 3"
(Pdb) l
9 print 0
10 elif val <= 3500 :
11 print "level 2"
12 print (val - 1600) * 0.05
13 elif val <= 6500 :
14 B->print "level 3"
15 print (val - 3500) * 0.10 + (3500-1600) * 0.05
16 else:
17 print "level 4"
18 print (val - 6500) * 0.20 + (6500-3500) * 0.10 + (3500-1600) * 0.05
19
执行到函数返回前: r
(Pdb) r
level 3
195.0
--Return--
>/****()
->None
->print (val - 3500) * 0.10 + (3500-1600) * 0.05
(Pdb)
说明:
pdb还有很多其他很多有用的指令,读者可以自行探索。输入h,h 命令。就可以得到命令的详细帮助。
不过,我个人认为一般无需启动这种调试方法,一般使用日志输出进行调试即可,除非遇到了非常微妙的错误。这时,单步调试的威力便显示出来了
Python中可以使用pdb进行代码调试pdb是python自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点、单步调试、进入函数调试、
查看当前代码、查看栈片段、动态改变变量的值等。pdb 提供了一些常用的调试命令,详情见表 1。
下面是pdb常用命令
推荐学习《Python教程》。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)