Python代码调试技巧教程详解
关于代码调试的技巧,我之前写过很多的⽂章,关注⽐较早的同学,也应该都有看过。
还没看过的同学,欢迎前往查阅:更多
其中有⼀篇是关于 pdb 的调试技巧的:
python入门教程资料⾥⾯介绍了两种 pdb 的调试⼊⼝,也是⼤部分所熟知的。
这⾥再带⼤家回顾⼀下
第⼀种:指定-m pdb来开启
$ python -m pdb pdb_demo.py
第⼆种:使⽤pdb.set_trace()在代码中设置断点
import pdb
pdb.set_trace()
但其实,pdb 还另外两种调试⽅法,第⼀种⽅法,可能有 99% 的开发者都没⽤过,甚⾄连见过都没有。
这两种⽅法,是配合 Python Console 的交互界⾯来实现的。
⾸先我准备好⼀个名为utils.py的 Python⽂件,⾥⾯定义了⼀个 sum 的⼯具函数(仅作演⽰⽤)。
def sum(*args):
result = 0
for arg in args:
result += arg
return result
然后在终端敲⼊ Python 进⼊ Console 的模式,导⼊这个模块,并调⽤ sum 函数,在正常情况下,函数可以正常⼯作。
哪里可以下载c语言编程软件>>> import utils
>>> utils.sum(1,2,3)
6
但如果你的参数类型传成了 str,函数就会报错啦~
java抽象类有没有构造方法>>> utils.sum(1,2,"3")
Traceback (most recent call last):精品小程序源码网
File "<stdin>", line 1, in <module>
File "/Users/MING/utils.py", line 4, in sum
result += arg
TypeError: unsupported operand type(s) for +=: 'int' and 'str'
由于这⾥的报错是我刻意触发的,从报错来看,是很容易定位的。
但是在实际应⽤中,难免会遇到⼀些⽆法从报错信息直接判断 bug 所在的情况。
这个时候,如果可以在报错后,切换到 pdb 的调试模式就好了~
事实上,pdb 是⽀持这种⽤法的。
只要你在当前的会话中,导⼊ pdb,再执⾏pdb.pm(),就可以切换到熟悉的 pdb 调试界⾯,并在抛错的地⽅打上断点,然后你就可以任意的查看运⾏时的变量信息。
如果你不是想等报错了再调试,⽽是⼀开始就想进⼊调试模式,可以使⽤pdb.runcall()函数
哪个更靠谱有的同学可能还会想到pdb.run()和pdb.runeval()这两个函数,但这两种⽅法,是需要提前在函数调试断点的,这就⽐较⿇烦了,⼀般情况下不推荐使⽤。
综上所述, pdb 调试⽅法主要有六种:
python -m pdb:运⾏ python ⽂件时直接进⼊调试模式
pdb.set_trace():事先设置断点,然后直接运⾏ python ⽂件
pdb.run():事先设置断点,然后直接运⾏ python 模块
pdb.runeval():事先设置断点,然后直接运⾏ python 模块(与 pdb.run 类似)
pdb.pm():在 Console 模式下出错后直接切换到调试模式,并定位到报错位置。
pdb.runcall():可以在不设置断点的情况下,直接调试代码⽚段。
其中,pdb.pm()是本⽂的重点,他虽然冷门,但却很好⽤,推荐给⼤家。
以上就是我今天的分享,希望对你有⽤,如果你也有好⽤的调试⼩技巧,欢迎留⾔分享,互相学习。
⽂章最后给⼤家介绍三个我⾃⼰写的在线⽂档:
第⼀个⽂档:
花了两个多⽉的时间,整理了 100 个 PyCharm 的使⽤技巧,为了让新⼿能够直接上⼿,我花了很多的时间录制了上百张 GIF 动图,有兴趣的前往在线⽂档阅读。
第⼆个⽂档:
系统收录各种 Python 冷门知识,Python Shell 的多样玩法,令⼈疯狂的 Python 炫技操作,Python 的超详细进阶知识解读,⾮常实⽤的 Python 开发技巧等。
第三个⽂档:
花了三个⽉时间写的⼀本适合零基础⼊门 Python 的全中⽂教程,搭配⼤量的代码案例,让初学者对代码的运作效果有⼀个直观感受,教程既有深度⼜有⼴度,每篇⽂章都会标内容的难度,是基础还是进
gradle implementation阶的,可供读者进⾏选择,是⼀本难得的 Python 中⽂电⼦教程。
以上就是Python代码调试技巧教程详解的详细内容,更多关于Python调试技巧的资料请关注其它相关⽂章!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论