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中__call__方法示例分析
Oct 11 Python
python使用htmllib分析网页内容的方法
May 08 Python
Python实现统计单词出现的个数
May 28 Python
Windows下为Python安装Matplotlib模块
Nov 06 Python
Python实现删除文件中含“指定内容”的行示例
Jun 09 Python
Python列表list排列组合操作示例
Dec 18 Python
使用python对文件中的单词进行提取的方法示例
Dec 21 Python
浅析Python3中的对象垃圾收集机制
Jun 06 Python
python IDLE 背景以及字体大小的修改方法
Jul 12 Python
python 的 scapy库,实现网卡收发包的例子
Jul 23 Python
python opencv根据颜色进行目标检测的方法示例
Jan 15 Python
python将YUV420P文件转PNG图片格式的两种方法
Jan 22 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下实现一个阿拉伯数字转中文数字的函数
2008/07/10 PHP
php修改时间格式的代码
2011/05/29 PHP
php中解析带中文字符的url函数分享
2015/01/20 PHP
十个PHP高级应用技巧果断收藏
2015/09/25 PHP
微信公众号开发之语音消息识别php代码
2016/08/08 PHP
人人网javascript面试题 可以提前实现下
2012/01/05 Javascript
javascript编码的几个方法详细介绍
2013/01/06 Javascript
使用CSS样式position:fixed水平滚动的方法
2014/02/19 Javascript
AngularJS实现全选反选功能
2015/12/08 Javascript
JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)
2016/06/02 Javascript
BootStrap 模态框实现刷新网页并关闭功能
2017/01/04 Javascript
RequireJS 依赖关系的实例(推荐)
2017/01/21 Javascript
微信小程序实现弹出菜单
2018/07/19 Javascript
React 使用Hooks简化受控组件的状态绑定
2019/03/18 Javascript
javascript使用substring实现的展开与收缩文字功能示例
2019/06/17 Javascript
Vue使用screenfull实现全屏效果
2020/09/17 Javascript
vue使用svg文件补充-svg放大缩小操作(使用d3.js)
2020/09/22 Javascript
[00:47]DOTA2荣耀之路6:玩不了啦!
2018/05/30 DOTA
python中实现迭代器(iterator)的方法示例
2017/01/19 Python
Python中表达式x += y和x = x+y 的区别详解
2017/06/20 Python
django2 快速安装指南分享
2018/01/05 Python
Python3使用turtle绘制超立方体图形示例
2018/06/19 Python
详解Python静态网页爬取获取高清壁纸
2019/04/23 Python
PyQt5实现让QScrollArea支持鼠标拖动的操作方法
2019/06/19 Python
用Python写一个自动木马程序
2019/09/17 Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
2020/02/16 Python
使用Python爬虫爬取小红书完完整整的全过程
2021/01/19 Python
实列教程 一款基于jquery和css3的响应式二级导航菜单
2014/11/13 HTML / CSS
vivo智能手机官方商城:vivo
2016/09/22 全球购物
英国现代市场:ARKET
2019/04/10 全球购物
品质口号大全
2014/06/17 职场文书
安全保卫工作竞聘材料
2014/08/25 职场文书
城南旧事观后感
2015/06/11 职场文书
2016重阳节红领巾广播稿
2015/12/18 职场文书
先进党支部事迹材料2016
2016/02/26 职场文书
如何写好开幕词?
2019/06/24 职场文书