宣传一下 Cyberbrain,真正解放程序员的 Python 调试工具 - V2EX
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 9594 次点击
    这是一个创建于 1827 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本来只想小范围宣传一下,但没什么人给我反馈,所以就来 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 &nsp;
    OP
       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  
    OP
       2020-10-09 11:31:13 +08:00
    @CallMeReznov #8 应该都有的。你用的哪个镜像?
    laike9m
        11
    laike9m  
    OP
       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  
    OP
       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  
    OP
       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  
    OP
       2020-10-09 12:31:30 +08:00 via Android
    @wuwukai007 我不喜欢自吹,但是 cyberbrain 完爆 snooper (虽然目前还不支持追踪深层的函数调用)。pysnooper 真的没什么技术含量,它的核心功能我两天就能写出来
    laike9m
        18
    laike9m  
    OP
       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  
    OP
       2020-10-09 12:51:53 +08:00 via Android
    @wdhwg001 在项目页面有后续版本的路线图,预计会在 4.0 支持。当然,我更希望有人能加入一起做,如果是我一个人的话 async 确实要等比较久了
    laike9m
        23
    laike9m  
    OP
       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  
    OP
       2020-10-09 13:19:49 +08:00
    zhuzhzh
        27
    zhuzhzh  
       2020-10-09 13:33:39 +08:00
    很不错,下一版开发 go trace?
    laike9m
        28
    laike9m  
    OP
       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  
    OP
       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  
    OP
       2020-10-09 14:25:48 +08:00
    @xiri #33 非常感谢,能帮忙提个 issue 吗?我会尽快修复
    https://github.com/laike9m/Cyberbrain/issues/new
    laike9m
        35
    laike9m  
    OP
       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  
    OP
       2020-10-09 14:44:55 +08:00
    laike9m
        40
    laike9m  
    OP
       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  
    OP
       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  
    OP
       2020-10-09 18:57:17 +08:00 via Android
    @xuzheliang 个人精力毕竟有限,只能依靠社区了。如果有人想开发 pycharm 我会尽力提供各种帮助
    laike9m
        45
    laike9m  
    OP
       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  
    OP
       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  
    OP
       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 送上~
    DJI360
        53
    DJI360  
       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  
    OP
       2020-10-10 00:33:20 +08:00 via Android
    @zckevin 没懂
    laike9m
        56
    laike9m  
    OP
       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  
    OP
       2020-10-10 01:22:22 +08:00
    @beastk #57 不支持 最低 3.7
    9LCRwvU14033RHJo
        59
    9LCRwvU14033RHJo  
       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  
    OP
       2020-10-10 10:10:43 +08:00 via Android
    @Felldeadbird 目前因为只能追踪一个函数,所以还好,毕竟一个函数不会特别大。未来的版本会支持追踪函数中每个函数的调用,这时候可能就需要针对大项目进行优化。
    vegetableChick
        63
    vegetableChick  
       2020-11-17 18:12:45 +08:00
    支持一下
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2294 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 15:53 PVG 23:53 LAX 08:53 JFK 11:53
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86