谷歌大神又一开源代码调试神器

点击上方 Java后端,选择 设为星标

优质文章,及时送达


如果调试是 Debug 的必经之路,那么编程应该将它考虑在内。今天我就和大家分享一个代码调试神器 - Cyberbrain。

Cyberbrain是一个免费开源的 Python 代码调试解决方案,它可视化程序执行以及每个变量的变化方式,让程序员免受调试之苦。主要具有以下3个特性:

  • 回溯变量更改

  • 查看程序执行的每个状态,包括变量的值

  • 循环调试

Cyberbrain并不会改变你的工作流程,运行一个程序(从 vscode 或命令行,都可以),一个新的面板将被打开,程序执行情况全部以可视化展示。

Cyberbrain如何安装

Cyberbrain由一个Python库和各种编辑器/ IDE集成组成。当前,它支持VS Code。要安装 Cyberbrain:

pip install cyberbrain
code --install-extension laike9m.cyberbrain

你也可以直接从VS Code上安装。

如何使用

假设你想跟踪一个函数foo,只需用@trace以下命令装饰它:

from cyberbrain import trace
# As of now, you can only have one @trace decorator in the whole program.
# We may change this in version 2.0, see https://github.com/laike9m/Cyberbrain/discussions/73
@trace  # Disable tracing with `@trace(disabled=True)`
def foo():
    ...

以下gif演示了工作流程:

使用Cyberbrain,可能有哪些意外

Cyberbrain 可能与其他调试器发生冲突。如果设置断点并使用 VSC 的调试器,则Cyberbrain 可能无法正常运行。

如果你打开了多个VS Code窗口,则将始终在第一个窗口中创建跟踪图。

当有多个装饰器时,应将其@trace作为最里面的装饰器。

@app.route("/")
@trace
def hello_world():
    x = [1, 2, 3]
    return "Hello, World!"

赛博大脑 - 数据流分析和变量跟踪

与其他调试器不同,Cyberbrain可以显示准确的数据流,并且可以在程序的每个状态中持续存在。你不仅不需要记住任何事情,甚至你都不需要逐步执行操作,这样一来就可以节省大量调试时间。

下图是使用Cyberbrain进行调试的方法:

假如你想找出返回值错误的原因。通过查看图表,你已经对导致返回值的原因有了一个大概的了解。

接下来,将鼠标悬停在“返回”节点上,所有相关值都会显示出来,形成从函数开始到结束的跟踪路径:

只要动动鼠标就能找到问题,谁还会去用编译器呢?

目标检查

如果现在有一个大列表,但它无法与图匹配,如何使用工具来检查它的值?devtools可用于检查值,如下所示。

启动后,Cyberbrain 会自动打开 devtools 窗口。将鼠标悬停在变量上时,其值将记录在 devtools 控制台中。因此,在这种情况下,尽管没有足够的空间在跟踪图中显示整个列表,但是您仍然可以从 devtools 中检查其值。

几乎所有的 Python 调试器(PyCharm,VS Code等)都会截取参数,并且无法显示大列表中的每个元素。但是我们相信“细节决定成败”,每条信息可能都是有用的,不应忽略。因此,除非你明确指示,Cyberbrain 不会截取参数。

循环

Cyberbrain还有另一个独特的功能,你可以在调试时设置循环计数器。

由于实现非常复杂,因此存在一些已知的错误,不过随着更新,应该会变得更好。

目前,Cyberbrain已经在Github上标星1.5K,累计分支 64 个。(Github地址:https://github.com/laike9m/Cyberbrain)

最后,值得一提的是,创建者 laike9m 毕业于清华大学,谷歌软件工程师,目前全职开发 Cyberbrain 工具。

开源最前线(ID:OpenSourceTop) 猿妹 编译

链接:https://medium.com/analytics-vidhya/cyberbrain-python-debugging-redefined-1db4c47a4d32

-END-如果看到这里,说明你喜欢这篇文章,请 转发、点赞。微信搜索「web_resource」,关注后回复「进群」或者扫描下方二维码即可进入无广告交流群。↓扫描二维码进群↓推荐阅读 1.  一份 Spring Boot 项目搭建模板2.  Spring Boot 实现应用监控和报警3.  Nginx 从入门到实战4.  一键式搭建分布式文件服务器5.  团队开发中 Git 最佳实践喜欢文章,点个在看 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Amango 芒果微信公众号管理框架是基于 Onethink 开源框架进行的二次开发,它继承Onethink的基本CMS管理理念,丰富了对微信公众号管理的更好得支持。 因此,它既可以兼容Onethink的插件也支持微信插件。本系统专注于单个微信公众号的管理,但它又不同于其他微信公众号管理系统。对于微信公众号管理 而言,无论你是使用者,还是插件开发者,它对于大家而言都是“新鲜”的。注重单公众号管理的个性化的实训,因此,它的部分理念是独树一帜的。如果你是匠心独运你的微信公众号,不妨来体验它,它将带给你新的微信公众号管理视角对于使用者来说对于信息调用:微信回复支持全站调用任意cms内容对于资源调用:微信素材统一管理机制对于关键词:微信关键词高级自定义(在芒果这,关键词=用户请求 自定义响应),您可以自定义关键词激活时间,分组,权限,主题等等...,此外,为了资源重复利用,我们的可以通过请求和响应的拖拽式绑定组装任意你想要的关键词对于关注者:自定义关注者所在分组,积分体制,用户分组所拥有的权限对于运营方面:微信支持任意位置植入任意内容,无论你是图文消息,文本消息,语音消息,地理消息等等,我们可以自行定义任意时间段植入任意内容对于前端页面:我们统一了插件与资讯界面风格,增强了用户中心以及自动登录对于开发者来说(仅仅针对微信插件)对于插件/资讯前台:采用自动响应的Amaze UI作为我们的Css框架,开发者可以采用模板渲染统一风格,为了更好地结合微信浏览器,我们内置了分享以及相关js控制显示对于微信端出来开发:我采用简洁的插件文件夹布局,更加简洁明了,针对微信控制器处理的开发,我们将更多的方法独立封装自定调用 【creat_url自动创建插件URL,lock上下文模块锁定,error/success快捷回复...等等】,在这里,无需手写繁杂的代码,只需 配置rules就可以进行关键词自动匹配,自动截取,自动定位到你的操作,让你的精力更多投入到功能开发而不是枯燥的关键词逻辑判断 标签:Amango
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值