python调试工具Birdseye的使用教程


Posted in Python onMay 25, 2021

Birdseye是一个Python调试器,它在函数调用中记录表达式的值,并让你在函数退出后轻松查看它们,例如:

python调试工具Birdseye的使用教程

无论你如何运行或编辑代码,都可以使用Birdseye。只需要你安装好依赖:

pip install birdseye

并在代码函数上方添加  @eye  装饰器(如上动图所示),即可根据需要运行函数,并在浏览器中查看结果。

它还可以与一些常用工具集成在一起,如 Pycharm 和 Vscode,以提供更流畅的体验,后续我们会介绍如何将其与这些工具结合使用。

它不仅仅能够单步执行,还能在循环迭代中来回移动,并查看所选表达式的值如何变化:

python调试工具Birdseye的使用教程

通过 birdseye 你能很容易地知道哪些表达式引发了异常:

python调试工具Birdseye的使用教程

你也能够展开具体的数据结构和对象以查看其内容:

python调试工具Birdseye的使用教程

调用会按功能组织(文件组织)并进行时间排序进行显示,让你一目了然地看到发生了什么:

python调试工具Birdseye的使用教程

1.快速上手

首先,使用 pip 安装 birdseye :

pip install birdseye

然后,对需要进行调试的函数使用eye装饰器:

from birdseye import eye

@eye
def foo():

在你调用该函数完成后,在终端运行命令打开Birdseye的Web服务:

python -m birdseye

python调试工具Birdseye的使用教程

在浏览器打开 http://localhost:7777 就能看到需要调试的函数执行流程了。点击下图的按钮即可跳转到最新的函数调用。

python调试工具Birdseye的使用教程

2.在Pycharm中集成调试

在 Pycharm 的 Settings 中,点击 Plugins 插件市场搜索 birdseye 点击 install 安装。

python调试工具Birdseye的使用教程

安装完成后重启Pycharm,就可以在 Pycharm 中使用 birdseye了:

python调试工具Birdseye的使用教程

python调试工具Birdseye的使用教程

python调试工具Birdseye的使用教程

默认情况下,该插件还可以为你自动运行Birdseye服务器,因此就不需要输入 python -m birdseye 那行命令了。

3.在VSCode中集成调试

在VSCode中继承调试Birdseye也非常方便,点击左侧的扩展商店,在弹出框中输入搜索 birdseye,并点击 install 安装:

python调试工具Birdseye的使用教程

安装完成后,点击 F1 输入Birdseye,就能显示调试界面:

python调试工具Birdseye的使用教程

python调试工具Birdseye的使用教程

如果无法正常显示右侧调试界面,并提示未安装birdseye,但实际上你已经安装成功了,这一般是路径错误导致的,请在扩展设置中手动更改python路径为你安装了Birdseye的Python。

python调试工具Birdseye的使用教程

4.美中不足

Birdseye 是一个非常强大的调试工具,但我认为这还是有缺点可以改善的:

1.为了防止堆栈过大,每个迭代它最多只保留6个(前三、末三)元素:

python调试工具Birdseye的使用教程

因此如果你想看一些特殊元素值的执行情况,它可能不会如你所愿。

不过,不需要担心某些分支你调试不到,因为 birdseye 有个保险机制:如果一个表达式仅在某种特定情况下会被执行,那么执行时的元素也会被加入到可调试元素中。

2.由于需要记录堆栈,程序会大大减慢速度,因此它绝对不适合上到生产环境。

3.每个函数调用,Birdseye 都需要收集许多数据,对于某些极其复杂的函数调用,可能会引发内存问题。

如果你不担心这三个缺点,而且希望能快速方便地看到函数中不同分支的执行情况,那么Birdseye就是你的不二之选。

以上就是python调试工具Birdseye的使用教程的详细内容,更多关于python调试工具Birdseye的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python基于Tkinter的HelloWorld入门实例
Jun 17 Python
python爬取淘宝商品详情页数据
Feb 23 Python
pyspark操作MongoDB的方法步骤
Jan 04 Python
使用python的pexpect模块,实现远程免密登录的示例
Feb 14 Python
Python3.5文件读与写操作经典实例详解
May 01 Python
python爬虫豆瓣网的模拟登录实现
Aug 21 Python
python 实现二维字典的键值合并等函数
Dec 06 Python
Python使用psutil获取进程信息的例子
Dec 17 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
Jun 14 Python
python对批量WAV音频进行等长分割的方法实现
Sep 25 Python
使用豆瓣源来安装python中的第三方库方法
Jan 26 Python
Python使用PyYAML库读写yaml文件的方法
Apr 06 Python
浅谈Python numpy创建空数组的问题
May 25 #Python
python实现语音常用度量方法的代码详解
python基础学习之生成器与文件系统知识总结
May 25 #Python
Python实战之实现简易的学生选课系统
May 25 #Python
python 如何用terminal输入参数
May 25 #Python
python 命令行传参方法总结
May 25 #Python
基于flask实现五子棋小游戏
May 25 #Python
You might like
PHP实现MySQL更新记录的代码
2008/06/07 PHP
用 Composer构建自己的 PHP 框架之基础准备
2014/10/30 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
详解关于php的xdebug配置(编辑器vscode)
2019/01/29 PHP
Yii2处理密码加密及验证的方法
2019/05/12 PHP
摘自启点的main.js
2008/04/20 Javascript
extjs form textfield的隐藏方法
2008/12/29 Javascript
利用JS重写Cognos右键菜单的实现代码
2010/04/11 Javascript
JS重要知识点小结
2011/11/06 Javascript
jQuery.extend 函数的详细用法
2012/06/27 Javascript
JQuery设置文本框和密码框得到焦点时的样式
2013/08/30 Javascript
jQuery制作拼图小游戏
2015/01/12 Javascript
一波JavaScript日期判断脚本分享
2016/03/06 Javascript
纯JS前端实现分页代码
2016/06/21 Javascript
javascript鼠标滑过显示二级菜单特效
2020/11/18 Javascript
javascript事件的传播基础实例讲解(35)
2017/02/14 Javascript
Javascript封装id、class与元素选择器方法示例
2017/03/13 Javascript
webpack 模块热替换原理
2018/04/09 Javascript
基于angular6.0实现的一个组件懒加载功能示例
2018/04/12 Javascript
js中复选框的取值及赋值示例详解
2020/10/18 Javascript
[00:20]DOTA2荣耀之路7:-ah fu-抢盾
2018/05/31 DOTA
[02:05:03]完美世界DOTA2联赛循环赛 LBZS VS Matador BO2 10.28
2020/10/28 DOTA
Python实现将Excel转换成xml的方法示例
2018/08/25 Python
Python3 pip3 list 出现 DEPRECATION 警告的解决方法
2019/02/16 Python
django models里数据表插入数据id自增操作
2020/07/15 Python
pycharm配置python 设置pip安装源为豆瓣源
2021/02/05 Python
CSS3弹性盒模型flex box快速入门心得(必看篇)
2016/05/24 HTML / CSS
html5视频常用API接口的实战示例
2020/03/20 HTML / CSS
IMPORT的选项IGNORE有什么作用?缺省是什么设置?
2015/09/17 面试题
JSF的标签库有哪些
2012/04/27 面试题
酒店出纳岗位职责
2013/12/29 职场文书
平面设计专业大学生职业规划书
2014/03/12 职场文书
化学教育专业自荐信
2014/07/04 职场文书
财产保全担保书
2015/01/20 职场文书
中学推普周活动总结
2015/05/07 职场文书
2015年度残疾人工作总结
2015/05/14 职场文书