mac系统下使用clion调试redis源码

获取源代码

有两种方式,第一种是从官网下载 Redis 源码压缩包,如图 1-1 所示。

图1-1

将压缩包解压得到一个文件夹。

第二种方式,通过 git clone 获取源码。

从 Github 上,使用 git clone https://github.com/redis/redis.git指令下载,下载完成后你会得到如下文件。

图 1-2

进入 redis 目录,使用 git checkout 切换到 7.0.5 这个 tag 。

复制

gir checkout tags/7.0.5 -b 7.0.5
  • 1.

编译 Redis

在编译之前,需要安装一些环境依赖,Redis 是 C 语言编写的,所以还需要 gcc 编译器。

执行 gcc -v判断是否安装了编译器。

图 1-3

没有安装的话,使用如下指令安装。

复制

xcode-select --install
  • 1.

一切准备就绪,进入 redis 的源码目录,执行 make命令就可以了,你可以类比成 Java 中的 mvn 命令。

复制

make CFLAGS="-g -O0" MALLOC=jemalloc
  • 1.

命令后边的 “-O0” 参数表示告诉编译器不要优化代码,防止你在 Debug 的时候, IDE 里面的 Redis 源码与实际运行的代码对应不上。

MALLOC=jemalloc ,指定在 Mac OS 系统上 Redis 使用 jemalloc 内存分配器,Linux 默认使用该分配器,如果是 Linux 系统,无需指定该参数。

内存碎片自动清理功能只在 jemalloc 内存分配器生效,所以才加上这个参数指定内存分配器。

如果在 Linux 系统上用于生产环境,那么直接使用指令 make命令即可。

编译成功,将会看到图 1-4 中Hint: It's a good idea to run 'make test' ;),提示我们可以运行单元测试,这一步可以省略。

图 1-4

启动 Redis

编译成功,进入 src 源码目录下,你会看到一个 redis-server 的可执行程序,使用如下指令启动。

复制

./redis-server ../redis.conf
  • 1.

图 1-5

代码调试环境搭建

编译好了,我们还差一个方便阅读和调试源码的工具。为了方便阅读和 debug 源码,极力推荐你使用 CLion 来阅读和调试 Redis 源码,我使用的是 CLion 2021.3 版本,它支持 Makefile 的项目。

安装好以后,打开 CLion,点击 open,选择 Redis 源码目录即可。

图 1-6

之后检查下 Run Debug 是否出现这些选项,选择编辑。

图 1-7

选择编辑 redis-server ,指定启动配置文件 redis.conf的目录,保存。

图 1-8

在 server.c​ 的main() 方法加断点,Debug 启动 redis -server,进行源码 Debug。

图 1-9