-
Notifications
You must be signed in to change notification settings - Fork 135
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
从给 RisingWave 提 PR 说起,聊聊怎么快速切入一个复杂的开源项目 #296
Comments
写的很好:) |
谢谢~ |
最近给一个复杂又不熟悉的项目(大模型推理框架 vllm) 提 pr 差不多也是按照这个方法来的。(action, ci, issue, debug, 分步拆解问 gpt),很有收获。 |
真棒,俺也想找个项目试试 |
来~ |
确实是这样, 工作中理解现有项目的切入点也是接到ticket, 解决ticket. (尤其是有人在后面催着的时候...). 尝试解决问题的过程中, 会了解到业务, 代码的edge case... 光靠读是没有体会的, 上午看, 下午就忘了. |
(比较好奇yihong老师是怎么同时完成 跑步+带娃+工作+开源 的,相信yihong老师一定有高效的时间管理技巧。。 |
我很少做时间管理,不过有些事儿日常就习惯下来了。嗯嗯是的我对时间不怎么紧张哈哈。 |
牛,学到了。可以给我的开源生活提效🥰 |
引子
前阵子机缘巧合下接触到了 risingwave 在这之前我可以说是仅仅从几个在这工作的几个厉害的推友那里得知有这么一个用 Rust 写的流数据库,而流数据库是什么,到底什么原理,也仅仅是有所想象。既然是机缘巧合下了解到的,就试试去看看他的代码,去了解下它到底是怎么回事儿,顺便学点什么。
这里特别感谢下叉鸽。
正文
那么如何快速去切入一个项目呢?Cursor, copilot, marscode? No, 目前这种补全工具在做一个几千个人做过的 demo 里,是无敌的,但对了解一个大项目,甚至能给这个大项目提交一点代码修改一些 bug 的能力近乎于 0. (突然想到好久没有当时特别火的那个解决程序员问题的创业公司的信息了,留下了个 demo, 半年过去了)
既然这些不行,什么可以呢?根据我自己的经验步骤如下。
.github
下面的workflow
如果这个项目很成熟,里面大概率会包括,如何编译,编译需要的依赖是什么?如何测试,需要的版本,不同环境需要安装的不同的包,都会在这个 workflow 里。看里面的 workflow, 然后根据步骤,编译,跑一些简单的命令,项目就跑起来了。./risedev c
可以在本地试一下。debug rust
OK 学习到了和 C 语言一样可以用 gdb 而且有 rust-binding 可以用 rust-gdb, 去项目目录看到,有一个.vscode
文件夹里面有如何用 VSCode debug 他们用的是 lldb, 我习惯命令行,再搜索下 lldb 也有 binding -> rust-lldbbt
拿到 backtrack 之后就可以去 break 你想 break 的点了(这里因为 Rust 我不太熟悉,项目也太大,lldb 略卡,我选择直接 break 行号b xxxxxxx.rs:41
另一个 terminal 跑 sql 再去 lldb 里一步一步调试就好了。尾巴
The text was updated successfully, but these errors were encountered: