0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python调试工具-Birdseye

汽车电子技术 来源:Python实用宝典 作者:Ckend 2023-02-24 10:55 次阅读

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

poYBAGP4JlaAPcxkAAA65j9ZkJE216.png

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

pip installbirdseye


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

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

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

pYYBAGP4JmiAd-QRAACPkn4jh9k077.png

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

poYBAGP4JnKAS_hrAAA4OrDbEx0314.png

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

poYBAGP4JnuAHEAMAAFOj0GEsow028.png

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

poYBAGP4JoaAMlbBAACUKykD7Rs403.png

1.快速上手

首先,使用 pip 安装 birdseye :

pip installbirdseye

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

frombirdseye importeye@eyedeffoo():

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

python -m birdseye

pYYBAGP4JpWAaf6NAADa4RP-e3U984.png

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

poYBAGP4Jp-AOiT3AAAL4JrP58A318.png

2.在Pycharm中集成调试

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

poYBAGP4JqqAWvJ9AADWXVUPySI727.png

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


poYBAGP4JrSAA-ZLAAD89SXJHGA723.png

pYYBAGP4JsKAXZ-wAAEZFlcJS1M566.png

pYYBAGP4Js2ACkx2AAD0qD8Pl4A918.png


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

3.在VSCode中集成调试

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

pYYBAGP4JtiAFioPAAAorjUdQO8943.png



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

poYBAGP4JuSAfQe5AAArNSXLPeE642.png

poYBAGP4Ju-ALbwTAADYZfkwNVk090.png

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

pYYBAGP4JvqAceWZAADd0kyO2nw804.png

4.美中不足

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

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

pYYBAGP4JwaAVXzKAABaGTcIU30654.png

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

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

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

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

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

我们的文章到此就结束啦,如果你喜欢今天的Python 实战教程,请持续关注Python实用宝典。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    3868

    浏览量

    61308
  • 调试器
    +关注

    关注

    1

    文章

    288

    浏览量

    23405
  • python
    +关注

    关注

    51

    文章

    4675

    浏览量

    83466
收藏 人收藏

    评论

    相关推荐

    FPGA调试工具-chipscope

    FPGA调试工具chipscope,学习与使用FPGA必用的工具。。
    发表于 03-23 09:45 86次下载

    超实用的串口调试工具

    电子发烧友网站提供《超实用的串口调试工具.rar》资料免费下载
    发表于 08-14 11:38 5次下载

    串口调试工具

    串口调试工具 便于单片机下载 串口调试工具 串口调试工具
    发表于 11-20 16:35 39次下载

    舵机调试工具

    舵机调试工具、直流电机的速度控制+测试程序。
    发表于 02-23 16:08 0次下载

    舵机调试工具

    飞思卡尔智能车舵机调试工具,其他舵机调试可自行修改舵机参数处理
    发表于 02-24 17:25 8次下载

    常用网络调试工具

    [4]常用网络调试工具_v1.0rc
    发表于 12-27 16:26 0次下载

    串口调试工具

    串口调试工具
    发表于 12-28 10:16 166次下载

    介绍Lauterbach调试工具的应用

    该演示由Lauterbach中国团队提供,展现您如何通过Lauterbach强大的嵌入式调试工具Trace32来调试和分析运行在Altera Cyclone V SoC芯片上面的软件。Lauterbach调试工具支持几乎所有操作
    的头像 发表于 06-26 08:09 5287次阅读

    串口调试工具

    串口调试工具免费下载。
    发表于 09-13 17:41 31次下载

    分享Perl和Python脚本轻量实用的调试工具

    Perl和Python作为目前芯片开发流程中最为流行的脚本语言,本文将分别介绍它们轻量且实用的调试工具(Debugger),让你在调试脚本的时候不再抓瞎。
    的头像 发表于 01-21 17:25 1322次阅读
    分享Perl和<b class='flag-5'>Python</b>脚本轻量实用的<b class='flag-5'>调试工具</b>

    调试工具检测

    调试工具检测
    发表于 01-31 15:01 0次下载

    Birdseye:极其强大的Python调试工具

    Birdseye是一个Python调试器,它在函数调用中记录表达式的值,并让你在函数** 退出 **后轻松查看它们,例如: 无论你如何运行或编辑代码,都可以使用Birdseye。只需要
    的头像 发表于 10-21 10:47 245次阅读
    <b class='flag-5'>Birdseye</b>:极其强大的<b class='flag-5'>Python</b><b class='flag-5'>调试工具</b>

    modbus调试工具

    modbus调试工具
    发表于 04-28 13:50 85次下载

    串口调试工具

    串口调试工具
    发表于 04-28 13:53 7次下载

    Birdseye:极其强大的Python调试工具

    Birdseye是一个Python调试器,它在函数调用中记录表达式的值,并让你在函数** 退出 **后轻松查看它们,例如: 无论你如何运行或编辑代码,都可以使用Birdseye。只需要
    的头像 发表于 11-01 09:50 188次阅读
    <b class='flag-5'>Birdseye</b>:极其强大的<b class='flag-5'>Python</b><b class='flag-5'>调试工具</b>