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

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

项目地址

https://github.com/laike9m/Cyberbrain

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

截图:

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

相关文章

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

  1. 这类 trace 工具让我很困惑的一点就是几亿次循环那种变量变化特别快的,然后又是 2G 的 json 在里面变来变去的怎么办。

  2. @est #14 这确实是个问题,不过我有大致的解决思路,就是隔一段时间把数据 dump 到磁盘一次。目前还没有着手优化这一块,不过是在计划内的。

  3. @wuwukai007 我不喜欢自吹,但是 cyberbrain 完爆 snooper (虽然目前还不支持追踪深层的函数调用)。pysnooper 真的没什么技术含量,它的核心功能我两天就能写出来

  4. @wuwukai007 pysnooper 只能告诉你 a 变了,但它不能告诉你 a 变化的来源,以及变化来源的来源,而这是 cyberbrain 的核心功能。

  5. @wdhwg001 在项目页面有后续版本的路线图,预计会在 4.0 支持。当然,我更希望有人能加入一起做,如果是我一个人的话 async 确实要等比较久了

  6. @wuwukai007 恩,因为 pysnooper 分析的是行级别的变化,而 cb 是在字节码级别做追踪的,拿到的信息要多太多,准确度也更高

  7. @zhuzhzh #27 谢谢。Cyberbrain 是 Python only 的,Go 可能需要更熟悉 Go 的人来开发,而且我怀疑在 Go 里能否拿到需要的信息

  8. @CallMeReznov #29 嗯,支持 Python 3.7+(过几天就支持 3.9 )。主要是因为用了一个 3.7 里新加的 API

  9. mark 一手,顺便能请问下是用了什么新特性导致只能 3.7+才能用吗,我也跟 ls 一样是 36 的。

  10. @laike9m 做 Go 的和这个完全不一样了,需要面向二进制配合符号做,部分功能恐怕需要魔改 runtime

  11. 是不是不支持递归函数啊,刚刚随手拿裴波那契数列的递归写法试了一下,结果报 AssertionError 了,又试了几个其他的递归函数,无一例外全部报错。
    正常写法的函数都没问题,应该不是我的环境的原因吧

  12. @xiri 我来拍脑袋猜一下,一个被 @ trace 修饰的函数在被调用的过程中不允许再次调用被修饰的函数。
    试下先正常 def fib(n): 出来,然后 trace(fib)(n) 来执行?可能可以。

  13. @xuzheliang 个人精力毕竟有限,只能依靠社区了。如果有人想开发 pycharm 我会尽力提供各种帮助

  14. @ahonn 讲真,我觉得其它语言里比较难做。。没有语言层面的支持,上层拿不到需要的信息

  15. @Felldeadbird 目前因为只能追踪一个函数,所以还好,毕竟一个函数不会特别大。未来的版本会支持追踪函数中每个函数的调用,这时候可能就需要针对大项目进行优化。

发表评论

电子邮件地址不会被公开。 必填项已用*标注