python调试工具Birdseye的使用教程
作者:Ckend 发布时间:2023-08-22 19:18:48
Birdseye是一个Python调试器,它在函数调用中记录表达式的值,并让你在函数退出后轻松查看它们,例如:
无论你如何运行或编辑代码,都可以使用Birdseye。只需要你安装好依赖:
pip install birdseye
并在代码函数上方添加 @eye 装饰器(如上动图所示),即可根据需要运行函数,并在浏览器中查看结果。
它还可以与一些常用工具集成在一起,如 Pycharm 和 Vscode,以提供更流畅的体验,后续我们会介绍如何将其与这些工具结合使用。
它不仅仅能够单步执行,还能在循环迭代中来回移动,并查看所选表达式的值如何变化:
通过 birdseye 你能很容易地知道哪些表达式引发了异常:
你也能够展开具体的数据结构和对象以查看其内容:
调用会按功能组织(文件组织)并进行时间排序进行显示,让你一目了然地看到发生了什么:
1.快速上手
首先,使用 pip 安装 birdseye :
pip install birdseye
然后,对需要进行调试的函数使用eye装饰器:
from birdseye import eye
@eye
def foo():
在你调用该函数完成后,在终端运行命令打开Birdseye的Web服务:
python -m birdseye
在浏览器打开 http://localhost:7777 就能看到需要调试的函数执行流程了。点击下图的按钮即可跳转到最新的函数调用。
2.在Pycharm中集成调试
在 Pycharm 的 Settings 中,点击 Plugins 插件市场搜索 birdseye 点击 install 安装。
安装完成后重启Pycharm,就可以在 Pycharm 中使用 birdseye了:
默认情况下,该插件还可以为你自动运行Birdseye服务器,因此就不需要输入 python -m birdseye 那行命令了。
3.在VSCode中集成调试
在VSCode中继承调试Birdseye也非常方便,点击左侧的扩展商店,在弹出框中输入搜索 birdseye,并点击 install 安装:
安装完成后,点击 F1 输入Birdseye,就能显示调试界面:
如果无法正常显示右侧调试界面,并提示未安 * irdseye,但实际上你已经安装成功了,这一般是路径错误导致的,请在扩展设置中手动更改python路径为你安装了Birdseye的Python。
4.美中不足
Birdseye 是一个非常强大的调试工具,但我认为这还是有缺点可以改善的:
1.为了防止堆栈过大,每个迭代它最多只保留6个(前三、末三)元素:
因此如果你想看一些特殊元素值的执行情况,它可能不会如你所愿。
不过,不需要担心某些分支你调试不到,因为 birdseye 有个保险机制:如果一个表达式仅在某种特定情况下会被执行,那么执行时的元素也会被加入到可调试元素中。
2.由于需要记录堆栈,程序会大大减慢速度,因此它绝对不适合上到生产环境。
3.每个函数调用,Birdseye 都需要收集许多数据,对于某些极其复杂的函数调用,可能会引发内存问题。
如果你不担心这三个缺点,而且希望能快速方便地看到函数中不同分支的执行情况,那么Birdseye就是你的不二之选。
来源:https://mp.weixin.qq.com/s/thYPCkBio9HRq8KzdG3Ymg


猜你喜欢
- 如下所示:import h5pyimport numpy as np#HDF5的写入:imgData = np.zeros((2,4))f
- 最近项目中有一个小需求,查找json文件中某个key或者value的路径,所以就写了一个简单的小脚本,比较粗糙。#!/usr/bin/env
- 今天修改之前实习小伙伴写的js代码的时候,遇到修改后页面未发生变化的问题。因为我是web开发小白,所以上网查了一波,得以解决~~初次进行we
- 说绘画语言,西方的油画是人类视觉语言里怎么也不能忽略的浓烈一笔。14~15世纪,蛋彩画——油画前身的发明,绘画可以使用均匀过渡的色彩渐变,并
- Python实现模拟时钟代码推荐# coding=utf8import sys, pygame, math, randomfrom pyga
- 一、默认参数python为了简化函数的调用,提供了默认参数机制:def pow(x, n = 2):r = 1 while n > 0
- generator-vue-component可以快速生成自己的组件开发的脚手架,类似于vue-cli生成vue项目,这脚手架是目录结构是方
- 总的来说视觉设计是一个很大的范畴,囊括了我们身边很多产品的再创作设计,比如工业产品设计,广告设计,新媒体设计,服饰设计,还有我们这里要讨论的
- 一、“无”的哲学佛家讲究“因果报应”,有果必有应。此段看似与主题没有血缘关系,实际讲的是“因”。我个人比较喜欢老子的道家思想,并喜欢以其思想
- easy_thumbnails:A powerful, yet easy to implement thumbnailing applica
- 页面置换算法:本质是为了让有限内存能满足无线进程。先说明一下处理缺页错误的过程:分页硬件在通过页表转换地址时会注意到无效位被设置,从而陷入操
- Python的安装并不难,但是要正确安装它的库以及配置环境变量则有些麻烦。对于刚刚开始想要学习Python的小伙伴来说,用Anaconda这
- 在网络上的Pandas教程中,很多都提到了如何使用Pandas将已有的数据(如csv,如hdfs等)直接加载成Pandas数据对象,然后在其
- 首先,在models.py中创建UserModels类from django.db import modelsfrom django.con
- 一、mysql自连接mysql有时在信息查询时需要进行对自身连接(自连接),所以我们需要为表定义别名。我们举例说明,下面是商品采购表,我们需
- Python OpenCV存储图像使用的是Numpy存储,所以可以将Numpy当做图像类型操作,操作之前还需进行类型转换,转换到int8类型
- 在我们写样式的时候,页面的CSS在经历几个版本的修改之后,可能有些样式已经用不到了,或许将某些样式更名了而原来的忘了删除,总之页面中可能存在
- 目的:本文实现QT登录界面,输入账号和密码后,系统连接Oracle数据进行判断账号和密码(MD5加密)是否和数据库一致,如果一致则提示登录成
- 创建类Python 类使用 class 关键字来创建。简单的类的声明可以是关键字后紧跟类名:class ClassName(bases):&
- python字符串查找函数的使用打开Python开发工具IDLE,新建‘findstr.py'文件,并写代码如下:s ='/