Python在debug方面的支持还是不错的,在明确代码意义的情况下,通过log、print和assert分析错误原因,配合单元测试可以很高效。然而,实际工作中大量代码很可能出自他人之手,这种情况下,使用debugger就显得更加高效了。
(推荐教程:python基础教程)
在控制台下进行程序调试
PDB
如果你熟悉命令行调试工具(例如gdb、lldb),那么使用Python中的PDB将获得非常好的体验,PDB不仅支持项目启动时进行调用,也支持在Python shell中交互式调试;功能上,支持断点、步进、异常捕获和解决、变量查看、变量改写、栈查看甚至字节码查看等。
举个PDB断点调试的例子:
用文本编辑器新建一个文档,就命名为debug1.py吧,输入最简单的Python代码片段:
import pdb a = "a string" b= "b string" pdb.set_trace() print("next step")
然后运行这个脚本,Windows下面这样运行 :
python debug1.py
然后执行到pdb.set_trace()这句后会自动进入断点调试模式,屏幕会显示类似的信息:
> c:\users\david\documents\debug1.py(5)<module>() -> print("next step")
(pdb)
PDB显示目前的断点位置,然后你就可以使用PDB调试命令了。
Tips:其他常用命令有:
pp,打印
n,下一步,执行下一步
s,步进,一步步的执行
l,列出,显示断点周围的源代码
c,继续,继续程序的运行
r,返回,继续直到当前函数返回
由PDB引入的VIM、Emacs工具都能很好地实现类似lldb和gdb的效果。同时,结合IPython这一扩展功能shell,其中的魔法命令能够更好地帮助程序调试。这是一般*nix环境下常见的调试组合,配合配置良好的文本编辑工具都能实现不错的类IDE体验。
PDB更能进行远程调试,即对远端(如服务器上正在运行着的Python代码)进行调试。几乎所有的debugger工具都是在PDB的功能基础上进行用户界面上的提升。
此外,对于部分框架,尤其是Web框架,进行调试往往需要结合具体的上下文环境(例如Django的开发调试测试需要上下文环境等),PDB交互式调试可以直接挂载在对应的交互环境中(如Django shell)。
相关教程推荐:python爬虫视频教程
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!