V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
laike9m
V2EX  ›  Python

宣传一下 Cyberbrain,真正解放程序员的 Python 调试工具

  •  7
     
  •   laike9m ·
    laike9m · 2020-10-09 10:00:51 +08:00 · 7383 次点击
    这是一个创建于 380 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本来只想小范围宣传一下,但没什么人给我反馈,所以就来 V2 贴一下。

    项目地址

    https://github.com/laike9m/Cyberbrain

    简单来说,Cyberbrain 可以实现精确的变量溯源,并且让用户查看变量在任意时刻的值。这些传统的 debugger 都做不到。

    截图:

    你觉得这个工具有用吗,还缺哪些功能?欢迎任何问题和反馈。

    63 条回复    2020-11-17 18:12:45 +08:00
    janxin
        1
    janxin   2020-10-09 10:03:00 +08:00
    新工具终于发布了呀,试一试
    treblex
        2
    treblex   2020-10-09 10:06:59 +08:00
    优秀
    laike9m
        3
    laike9m   2020-10-09 10:07:05 +08:00
    @janxin #1 发布了。但是没人鸟,而我又不想现在就去大规模宣传😢
    frostming
        4
    frostming   2020-10-09 10:10:28 +08:00
    左老师牛皮
    676529483
        5
    676529483   2020-10-09 10:11:13 +08:00
    pycon 上了解的,终于能用了吗?可惜现在写 go 了(doge)
    arcadia
        6
    arcadia   2020-10-09 10:11:40 +08:00   ❤️ 1
    试用一下看看哈
    wzw
        7
    wzw   2020-10-09 10:22:10 +08:00 via iPhone
    现在用 go 多点了,这个 py 应该很实用
    CallMeReznov
        8
    CallMeReznov   2020-10-09 10:42:14 +08:00
    国内的镜像还没更新到吗?
    SD10
        9
    SD10   2020-10-09 10:42:17 +08:00 via iPhone
    牛🍻
    laike9m
        10
    laike9m   2020-10-09 11:31:13 +08:00
    @CallMeReznov #8 应该都有的。你用的哪个镜像?
    laike9m
        11
    laike9m   2020-10-09 11:37:35 +08:00
    @676529483 #5 PyCon 上演示的那个是个原型。今年完全重写,比在 PyCon 的那版强太多了。
    pidal20
        12
    pidal20   2020-10-09 11:50:55 +08:00 via iPhone
    看示意图好像是用 github-codespaces 开发的?
    laike9m
        13
    laike9m   2020-10-09 11:52:05 +08:00
    @liguanye7 #12 我申请了 codespaces 但还没给我批。之后会支持。目前支持 VS Code 和 Gitpod
    est
        14
    est   2020-10-09 12:07:56 +08:00   ❤️ 1
    这类 trace 工具让我很困惑的一点就是几亿次循环那种变量变化特别快的,然后又是 2G 的 json 在里面变来变去的怎么办。
    laike9m
        15
    laike9m   2020-10-09 12:10:06 +08:00
    @est #14 这确实是个问题,不过我有大致的解决思路,就是隔一段时间把数据 dump 到磁盘一次。目前还没有着手优化这一块,不过是在计划内的。
    wuwukai007
        16
    wuwukai007   2020-10-09 12:17:35 +08:00 via Android
    感觉和 pysnooper 功能差不多呀
    laike9m
        17
    laike9m   2020-10-09 12:31:30 +08:00 via Android
    @wuwukai007 我不喜欢自吹,但是 cyberbrain 完爆 snooper (虽然目前还不支持追踪深层的函数调用)。pysnooper 真的没什么技术含量,它的核心功能我两天就能写出来
    laike9m
        18
    laike9m   2020-10-09 12:33:33 +08:00 via Android
    @wuwukai007 pysnooper 只能告诉你 a 变了,但它不能告诉你 a 变化的来源,以及变化来源的来源,而这是 cyberbrain 的核心功能。
    wuwukai007
        19
    wuwukai007   2020-10-09 12:37:47 +08:00 via Android
    @laike9m 追踪来源有点意思,那确实跟 pysnooper 侧重点不一样了
    wdhwg001
        20
    wdhwg001   2020-10-09 12:41:09 +08:00 via iPhone
    async 的支持怎么样?
    jin7
        21
    jin7   2020-10-09 12:51:07 +08:00
    先收藏一下
    laike9m
        22
    laike9m   2020-10-09 12:51:53 +08:00 via Android
    @wdhwg001 在项目页面有后续版本的路线图,预计会在 4.0 支持。当然,我更希望有人能加入一起做,如果是我一个人的话 async 确实要等比较久了
    laike9m
        23
    laike9m   2020-10-09 12:53:50 +08:00 via Android
    @wuwukai007 恩,因为 pysnooper 分析的是行级别的变化,而 cb 是在字节码级别做追踪的,拿到的信息要多太多,准确度也更高
    justin2018
        24
    justin2018   2020-10-09 13:05:22 +08:00
    颜值不错 收藏了 😁
    CallMeReznov
        25
    CallMeReznov   2020-10-09 13:08:00 +08:00
    @laike9m #10 阿里的 早上发帖子的时候 pip 了一下没有
    laike9m
        26
    laike9m   2020-10-09 13:19:49 +08:00
    zhuzhzh
        27
    zhuzhzh   2020-10-09 13:33:39 +08:00
    很不错,下一版开发 go trace?
    laike9m
        28
    laike9m   2020-10-09 13:44:57 +08:00
    @zhuzhzh #27 谢谢。Cyberbrain 是 Python only 的,Go 可能需要更熟悉 Go 的人来开发,而且我怀疑在 Go 里能否拿到需要的信息
    CallMeReznov
        29
    CallMeReznov   2020-10-09 13:54:26 +08:00
    @laike9m #26 怪我。。。我 py 版本 367 的。
    laike9m
        30
    laike9m   2020-10-09 13:57:01 +08:00
    @CallMeReznov #29 嗯,支持 Python 3.7+(过几天就支持 3.9 )。主要是因为用了一个 3.7 里新加的 API
    xiaolinjia
        31
    xiaolinjia   2020-10-09 13:57:35 +08:00
    mark 一手,顺便能请问下是用了什么新特性导致只能 3.7+才能用吗,我也跟 ls 一样是 36 的。
    janxin
        32
    janxin   2020-10-09 14:10:45 +08:00
    @laike9m 做 Go 的和这个完全不一样了,需要面向二进制配合符号做,部分功能恐怕需要魔改 runtime
    xiri
        33
    xiri   2020-10-09 14:11:07 +08:00   ❤️ 1
    是不是不支持递归函数啊,刚刚随手拿裴波那契数列的递归写法试了一下,结果报 AssertionError 了,又试了几个其他的递归函数,无一例外全部报错。
    正常写法的函数都没问题,应该不是我的环境的原因吧
    laike9m
        34
    laike9m   2020-10-09 14:25:48 +08:00
    @xiri #33 非常感谢,能帮忙提个 issue 吗?我会尽快修复
    https://github.com/laike9m/Cyberbrain/issues/new
    laike9m
        35
    laike9m   2020-10-09 14:26:47 +08:00
    no1xsyzy
        36
    no1xsyzy   2020-10-09 14:31:57 +08:00
    @xiri 我来拍脑袋猜一下,一个被 @ trace 修饰的函数在被调用的过程中不允许再次调用被修饰的函数。
    试下先正常 def fib(n): 出来,然后 trace(fib)(n) 来执行?可能可以。
    SimonOne
        37
    SimonOne   2020-10-09 14:34:14 +08:00
    我不太懂这些,不过这个变量可视化的部分和 https://marketplace.visualstudio.com/items?itemName=hediet.debug-visualizer 有什么差别吗
    xiri
        38
    xiri   2020-10-09 14:39:55 +08:00   ❤️ 1
    @laike9m 已经提了
    laike9m
        39
    laike9m   2020-10-09 14:44:55 +08:00
    laike9m
        40
    laike9m   2020-10-09 14:46:40 +08:00   ❤️ 1
    @SimonOne #37 哈哈,它们长得像是因为都用了 vis-network 这个可视化库🙈 不过目的是完全不一样的。debug-visulizer 是可视化数据结构,Cyberbrain 是可视化代码执行流程
    ruanimal
        41
    ruanimal   2020-10-09 15:46:37 +08:00
    挺感兴趣的,有设计文档吗
    laike9m
        42
    laike9m   2020-10-09 15:51:25 +08:00 via Android
    @ruanimal 这一版没有。。可以加一下 discord 我语音给你讲,链接在 readme 最底部
    xuzheliang
        43
    xuzheliang   2020-10-09 16:02:36 +08:00
    看到不支持 pycharm 心凉了一半....
    不过好东西,支持!
    laike9m
        44
    laike9m   2020-10-09 18:57:17 +08:00 via Android
    @xuzheliang 个人精力毕竟有限,只能依靠社区了。如果有人想开发 pycharm 我会尽力提供各种帮助
    laike9m
        45
    laike9m   2020-10-09 18:58:22 +08:00 via Android
    @xuzheliang 其实我平时也都是用 pycharm 的。。但是没办法谁叫 Web 前端好实现呢
    ahonn
        46
    ahonn   2020-10-09 19:32:34 +08:00   ❤️ 1
    看起来很棒,可惜不写 Python 。如果 JavaScript 也能有类似的东西就好了..
    laike9m
        47
    laike9m   2020-10-09 19:36:11 +08:00 via Android
    @ahonn 讲真,我觉得其它语言里比较难做。。没有语言层面的支持,上层拿不到需要的信息
    CismonX
        48
    CismonX   2020-10-09 20:15:00 +08:00   ❤️ 1
    好东西。。看的我都想做一个 PHP 的同类工具了
    laike9m
        49
    laike9m   2020-10-09 20:21:58 +08:00 via Android
    @CismonX good luck👍
    zckevin
        50
    zckevin   2020-10-09 21:50:15 +08:00
    Time travel 吗?
    zrp1994
        51
    zrp1994   2020-10-09 22:04:44 +08:00
    @laike9m Star 了!学习一下怎么做 debugger
    abersheeran
        52
    abersheeran   2020-10-09 22:11:34 +08:00   ❤️ 1
    这个调试器厉害了啊,变化来源追踪。star 送上~
    hfutzj
        53
    hfutzj   2020-10-09 23:16:35 +08:00
    虽然最近写的少了,但是还是挺需要的,之前在 pycharm 挨个看,先 star
    mwVYYA6
        54
    mwVYYA6   2020-10-09 23:44:58 +08:00 via Android
    看起来有点意思
    laike9m
        55
    laike9m   2020-10-10 00:33:20 +08:00 via Android
    @zckevin 没懂
    laike9m
        56
    laike9m   2020-10-10 00:33:49 +08:00 via Android
    @hfutzj 谢谢
    beastk
        57
    beastk   2020-10-10 00:47:36 +08:00 via iPhone
    牛逼,支持 2.7.x 不
    laike9m
        58
    laike9m   2020-10-10 01:22:22 +08:00
    @beastk #57 不支持😅 最低 3.7
    user8341
        59
    user8341   2020-10-10 08:14:33 +08:00
    很有意思的项目
    rapiz
        60
    rapiz   2020-10-10 09:33:27 +08:00
    很有趣,帮顶支持一下
    Felldeadbird
        61
    Felldeadbird   2020-10-10 09:52:23 +08:00
    6 !将 debug 的变量 GUI 化。 不知道对大项目支持度怎么样。
    laike9m
        62
    laike9m   2020-10-10 10:10:43 +08:00 via Android
    @Felldeadbird 目前因为只能追踪一个函数,所以还好,毕竟一个函数不会特别大。未来的版本会支持追踪函数中每个函数的调用,这时候可能就需要针对大项目进行优化。
    vegetableChick
        63
    vegetableChick   341 天前
    支持一下
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2161 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 15:28 · PVG 23:28 · LAX 08:28 · JFK 11:28
    ♥ Do have faith in what you're doing.