python调试工具Birdseye的使用教程

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,就能显示调试界面:

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

4.美中不足

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

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

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

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

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

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

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

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

(0)

相关推荐

  • python框架flask入门之环境搭建及开启调试

    传说中的python web开发有2大宝器,一个是倚天剑,一个就是屠龙刀.django作为倚天剑已经被大众所熟知,今天我们就来看看flask这把屠龙宝刀. 简介 Flask 是依赖Jinja模板引擎和 WerkzeugWSGI 套件的一套web微框架. 它是小巧的,它是符合wsgi标准的,它是优雅的,也是容易上手的框架,可以说谁掌握了flask这把屠龙刀,谁就可以号令python的web江湖. 安装 包管理工具的出现使得软件安装变得异常简单和容易.python中的包管理工具是pip.一般这个工具

  • 详解python使用金山词霸的翻译功能(调试工具断点的使用)

    今天试着用python获取金山词霸的翻译功能,链接在这里: ICIBA传送门 打开之后,界面是这样的,还是比较干净的. 按F12,打开调试工具,选择Network,找到XHR 这里就是查看网络传输的内容.XHR就是不刷新页面的网络传输,就是常说的ajax(阿贾克斯,像是希腊神话里的名字--). 然后我们在翻译窗口写点儿内容,然后点翻译 看,左边的页面出现了翻译结果,右边调试窗口出现了两条数据传输. 两条?那我们选哪条呢?点开看看-- 哦,天哪~两条都是一样的,那我们随便选一条就可以了. 点一下,

  • Python 代码调试技巧示例代码

    Debug 对于任何开发人员都是一项非常重要的技能,它能够帮助我们准确的定位错误,发现程序中的 bug.python 提供了一系列 debug 的工具和包,可供我们选择.本文将主要阐述如何利用 python debug 相关工具进行 debug. 使用 pdb 进行调试 pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点.单步调试.进入函数调试.查看当前代码.查看栈片段.动态改变变量的值等.pdb 提供了一些常用的调试命令,详情见表

  • python3.7调试的实例方法

     PyCharm IDE 窗口布局 PyCharm 调试代码实例(这里我以自己的代码为例) __author__ = 'lxm'  #!/usr/bin/python  import thread  import time  # Define a function for the thread  def print_time( threadName, delay):         count = 0        while count <  5:            count += 1 

  • Python使用pdb调试代码的技巧

    什么是pdb 不知道大家在用Python写代码出现报错时是怎样调试的,从报错提示定位回去一步一步check每一行?如果没有IDE或者命令行写代码时又该怎样快速调试?这时如果使用pdb进行调试将会异常方便. Pdb就是Python debugger,是python自带的调试器.通过 pdb 我们可以交互式的查看运行过程中变量的值.设置断点.逐行执行代码.查看代码的调用栈等等.并且如果环境没有 GUI 的话,那么 pdb 能够助你更快速的调试代码. 首先我们准备一段有问题的代码用于示例 def te

  • python 调试器pdb的简单使用

    使用PDB的方式有两种: 1. 单步执行代码,通过命令 python -m pdb xxx.py 启动脚本,进入单步执行模式 pdb命令行: 1)进入命令行Debug模式,python -m pdb xxx.py 2)h:(help)帮助 3)w:(where)打印当前执行堆栈 4)d:(down)执行跳转到在当前堆栈的深一层(个人没觉得有什么用处) 5)u:(up)执行跳转到当前堆栈的上一层 6)b:(break)添加断点 b 列出当前所有断点,和断点执行到统计次数 b line_no:当前脚

  • Python脚本调试工具安装过程

    Pycharm工具 前言 好的学习是离不开一个好的工具,今天分享一下一款用于python脚本编写以及调试的工具--PyCharm Community Edition.正常情况下我们可以从官网下载或者从电脑管家的软件管理中搜索下载,这里提供一下官网下载地址:https://pycharm-community-edition.en.softonic.com/(ps:安装完成后涉及授权期限)不过国内破解版很多,小伙伴们可以自行下载. 本文详细介绍一下,他的安装过程,我是安装两三次才成功,属实非傻瓜式一

  • ubunt18.04LTS+vscode+anaconda3下的python+C++调试方法

    1.安装背景 最近想放弃windows编程环境,转到linux.原因就一个字:潮 从格式化所有硬盘,到安装win10/ubuntu18.04双系统,其中的痛苦,我想只有经历过的人才会知道. 在这里,我还是提一些安装双系统的几点建议吧: ① 先装win10,我是使用老毛桃在线安装的专业版 ② 装ubuntu很烦人,本以为通过教程(先下载iso,再制作启动u盘,再修改bios中的u盘优先启动方式)就可以了,最终无果.我只好用实验室同学已经制作好的ubuntu 启动盘进行安装,结果开启出现了gnru,

  • Python 如何调试程序崩溃错误

    问题 你的程序崩溃后该怎样去调试它? 解决方案 如果你的程序因为某个异常而崩溃,运行 python3 -i someprogram.py 可执行简单的调试. -i 选项可让程序结束后打开一个交互式shell. 然后你就能查看环境,例如,假设你有下面的代码: # sample.py def func(n): return n + 10 func('Hello') 运行 python3 -i sample.py 会有类似如下的输出: bash % python3 -i sample.py Trace

  • python调试工具Birdseye的使用教程

    Birdseye是一个Python调试器,它在函数调用中记录表达式的值,并让你在函数退出后轻松查看它们,例如: 无论你如何运行或编辑代码,都可以使用Birdseye.只需要你安装好依赖: pip install birdseye 并在代码函数上方添加  @eye  装饰器(如上动图所示),即可根据需要运行函数,并在浏览器中查看结果. 它还可以与一些常用工具集成在一起,如 Pycharm 和 Vscode,以提供更流畅的体验,后续我们会介绍如何将其与这些工具结合使用. 它不仅仅能够单步执行,还能在

  • python中numpy包使用教程之数组和相关操作详解

    前言 大家应该都有所了解,下面就简单介绍下Numpy,NumPy(Numerical Python)是一个用于科学计算第三方的Python包. NumPy提供了许多高级的数值编程工具,如:矩阵数据类型.矢量处理,以及精密的运算库.专为进行严格的数字处理而产生.下面本文将详细介绍关于python中numpy包使用教程之数组和相关操作的相关内容,下面话不多说,来一起看看详细的介绍: 一.数组简介 Numpy中,最重要的数据结构是:多维数组类型(numpy.ndarray) ndarray由两部分组成

  • python常见排序算法基础教程

    前言:前两天腾讯笔试受到1万点暴击,感觉浪费我两天时间去牛客网做题--这篇博客介绍几种简单/常见的排序算法,算是整理下. 时间复杂度 (1)时间频度一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道.但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了.并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多.一个算法中的语句执行次数称为语句频度或时间频度.记为T(n). (2)时间复

  • Python常用算法学习基础教程

    本节内容 算法定义 时间复杂度 空间复杂度 常用算法实例 1.算法定义 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制.也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出.如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题.不同的算法可能用不同的时间.空间或效率来完成同样的任务.一个算法的优劣可以用空间复杂度与时间复杂度来衡量. 一个算法应该具有以下七个重要的特征: ①有穷性(Fin

  • Python装饰器入门学习教程(九步学习)

    装饰器(decorator)是一种高级Python语法.装饰器可以对一个函数.方法或者类进行加工.在Python中,我们有多种方法对函数和类进行加工,比如在Python闭包中,我们见到函数对象作为某一个函数的返回结果.相对于其它方式,装饰器语法简单,代码可读性高.因此,装饰器在Python项目中有广泛的应用. 这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方式. 第一步:最简单的函数,准备附加额外功能 # -*- coding:gbk -*- '''示例1: 最简单的函数,表

  • Python之Django环境搭建教程(MAC+pycharm+Django++postgreSQL)

    搭建Django环境似乎是一件很简单的事情,其实不然,苦命的我折腾了大半天才好, 遂在此总结下整个搭建过程,同时也愿刚入门的同行少走弯路~ 现在开始,所需工具: MAC电脑 Pycharm 2017 for MAC jdk1.8 Python3.6 postgreSQL 9.6.6 Toad/navicat/pgAdmin 数据库工具 (非必须) 大致需要这些东西,至于为什么要装jdk,大概是Pycharm本身部分依赖于java环境,可以看看产品说明可略窥一二: 嗯~,还有postgreSQL如

  • Windows环境下python环境安装使用图文教程

    Windows环境下python的安装与使用 一.python如何运行程序 首先说一下python解释器,它是一种让其他程序运行起来的程序.当你编写了一段python程序,python解释器将读取程序,并按照其中的命令执行,得出结果,实际上,解释器是代码与机器的计算机硬件之间的软件逻辑层. 通俗来说,我们的计算机是基于二进制进行运算的,无论你用什么语言来写程序,无论你的程序写的多么简单或多么复杂,最终交给计算机运行的一定是 0或1,因为计算机只能识别0和1. 我们目前使用的大多数编程语言都是高级

  • python操作oracle的完整教程分享

    1. 连接对象 操作数据库之前,首先要建立数据库连接. 有下面几个方法进行连接. >>>import cx_Oracle >>>db = cx_Oracle.connect('hr', 'hrpwd', 'localhost:1521/XE') >>>db1 = cx_Oracle.connect('hr/hrpwd@localhost:1521/XE') >>>dsn_tns = cx_Oracle.makedsn('localho

  • Python 机器学习库 NumPy入门教程

    NumPy是一个Python语言的软件包,它非常适合于科学计算.在我们使用Python语言进行机器学习编程的时候,这是一个非常常用的基础库. 本文是对它的一个入门教程. 介绍 NumPy是一个用于科技计算的基础软件包,它是Python语言实现的.它包含了: 强大的N维数组结构 精密复杂的函数 可集成到C/C++和Fortran代码的工具 线性代数,傅里叶变换以及随机数能力 除了科学计算的用途以外,NumPy也可被用作高效的通用数据的多维容器.由于它适用于任意类型的数据,这使得NumPy可以无缝和

  • Python 数据处理库 pandas 入门教程基本操作

    pandas是一个Python语言的软件包,在我们使用Python语言进行机器学习编程的时候,这是一个非常常用的基础编程库.本文是对它的一个入门教程. pandas提供了快速,灵活和富有表现力的数据结构,目的是使"关系"或"标记"数据的工作既简单又直观.它旨在成为在Python中进行实际数据分析的高级构建块. 入门介绍 pandas适合于许多不同类型的数据,包括: 具有异构类型列的表格数据,例如SQL表格或Excel数据 有序和无序(不一定是固定频率)时间序列数据.

随机推荐