我是一段不羁的公告!
记得给艿艿这 3 个项目加油,添加一个 STAR 噢。
https://github.com/YunaiV/SpringBoot-Labs
https://github.com/YunaiV/onemall
https://github.com/YunaiV/ruoyi-vue-pro

精尽 Redis 源码分析 —— 调试环境搭建(Redis 5.X 版本)【废弃,建议看 Redis 6.X 版本】

艿艿是 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

./CMakeLists.txt
./deps/CMakeLists.txt
./deps/linenoise/CMakeLists.txt
./deps/hiredis/CMakeLists.txt
./deps/lua/CMakeLists.txt
./src/modules/CMakeLists.txt
  • 注意,这 6 个 CMakeLists.txt 需要我们新建。艿艿这里是已经操作完成了。

6 个文件,具体的内容,胖友点击下方的链接,然后创建并复制到其中:

😈 想偷懒的胖友,其实可以直接克隆我的项目即可。

添加完成后,右键 ./CMakeLists.txt 文件,选择 [Reload CMake Project] 操作,如下图:Reload CMake Project

重新加载完成后,我们就可以看到 Debug 增加了各种选项,如下图:Debug

4. Debug redis-server

Debug 运行 redis-server 。此时,会报 aeEventLoop 相关的异常,如下图:aeEventLoop 异常

  • 打开 ae_kqueue.c 文件,添加两个头文件:

    #include <sys/types.h>
    #include <sys/event.h>
    #include <sys/time.h>
    #include "ae.h" // 新增
    #include "zmalloc.h" // 新增

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 源码感兴趣的胖友,可以购买本书来撸,艿艿自己也是买的这本书。

本文参考文章:

总访客数 && 总访问量