艿艿是 MacOS , 胖友如果是 Windows 的话,可以参考本文,略作修改。
1. 依赖工具
1.1 CLion
下载地址:https://www.jetbrains.com/clion/
Jetbrains 团队提供的 C/C++ 开发工具。
和我们平时使用的 IntelliJ IDEA 差别不大。
1.2 CMake
CLion 使用 CMake 编译工具,所以我们需要进行下安装。
直接使用 brew 来进行安装:
brew install cmake |
2. 源码拉取
从官方仓库 https://github.com/antirez/redis Fork 出属于自己的仓库。
- 为什么要 Fork ?既然开始阅读、调试源码,我们可能会写一些注释,有了自己的仓库,可以进行自由的提交。😈
- 本文使用的 Redis 版本为
5.0.X
。 - 使用 CLion 从 Fork 出来的仓库拉取代码。因为 Redis 项目比较大,从仓库中拉取代码的时间会比较长。
3. 添加 CMakeLists.txt 文件
CLion 使用 CMake 作为编译工具,所以我们需要添加 CMakeLists.txt 文件。这里,我们需要新建 6 个 CMakeLists.txt 文件。分别如下:
find . -iname CMakelists.txt |
- 注意,这 6 个 CMakeLists.txt 需要我们新建。艿艿这里是已经操作完成了。
6 个文件,具体的内容,胖友点击下方的链接,然后创建并复制到其中:
- ./CMakeLists.txt
- ./deps/CMakeLists.txt
- ./deps/linenoise/CMakeLists.txt
- ./deps/hiredis/CMakeLists.txt
- ./deps/lua/CMakeLists.txt
- ./src/modules/CMakeLists.txt
😈 想偷懒的胖友,其实可以直接克隆我的项目即可。
添加完成后,右键 ./CMakeLists.txt
文件,选择 [Reload CMake Project] 操作,如下图:Reload CMake Project
重新加载完成后,我们就可以看到 Debug 增加了各种选项,如下图:Debug
4. Debug redis-server
Debug 运行 redis-server 。此时,会报 aeEventLoop 相关的异常,如下图:aeEventLoop 异常
打开
ae_kqueue.c
文件,添加两个头文件:
Debug 运行 redis-server 。此时,会报 release.h
相关的异常,如下图:release.h 异常
- 打开
mkreleasehdr.sh
脚本,然后进行执行。
Debug 运行 redis-server 。撒花,成功,如下图:启动成功
如果胖友想验证自己是不是真的可以调试,可以打开 server.c
文件,在 #main(int argc, char **argv)
方法中,添加断点,开始愉快的调试。如下图:调试 main 方法
666. 彩蛋
嘿嘿,比想象中的顺利。如果胖友搭建调试的过程中,有碰到问题,可以在星球上给艿艿留言。艿艿自己在配置 ./CMakeLists.txt
文件卡壳了,不同版本的 Redis 会有所不同。
理论来说,Redis 的源码解析,艿艿是不会更新,嘿嘿。市面上已经有一本 《Redis设计与实现》 写的非常不错。如果对 Redis 源码感兴趣的胖友,可以购买本书来撸,艿艿自己也是买的这本书。
- 网站传送门:http://redisbook.com/ 可以体验下。
- 微信读书上,有该书。
本文参考文章: