CLion 编译运行 redis
- 环境
- 前言
- 编译
- redis-server 编译
- redis-cli
- redis 运行与调试
- 将 redis-cli 编译配置与 redis-cli 可执行文件关联起来。
- redis 运行
- redis 调试
- 结语
环境
- Ubuntu 18.04.5
- CLion 2020.3.2
- Redis 6.0.14
前言
发现很多利用 clion 编译调试 redis 的博文提到 clion 不支持 makefile 编译 redis,转而写了个 CMakeLists 文件编译,其实这 duck 不必。
clion 本身支持 makefile 编译 (见下图),因此咱们没必要花太多心思在源码编译问题上,更没必要重新去写个 CMakeLists 。
编译
当然,咱们还是得编译 redis 项目,利用 clion 对 makefile 的支持就彳亍。
用 clion 打开 redis 项目,默认情况下对 all 编译。
在终端用过 redis 的小伙伴应该知道,咱们启用 redis 的两条命令。
// 启动 redis
redis-server
// 操作 redis
redis-cli
因此,咱们至少需要把 redis-server 和 redis-cli 给编译成可执行文件,才可以进一步使用并调试 redis。
redis-server 编译
首先将编译配置换成 redis-server
再点击运行按钮
打开后,发现有错误提示
这儿咱们可以暂时不用管它,点击 Run 按钮,弹出个提示框,直接 Continue Anyway
点击之后,左下角出现编译信息
如果是这种信息,就表明编译成功了。
在 src/ 文件夹下面就能找到 redis-server 可执行文件。
redis-cli
和 redis-server 用上同样的方法也能把 redis-cli 给编译出来,同样在 src/ 文件夹下面。
redis 运行与调试
应该没忘记在编译配置那儿出现的错误信息叭。其实那个选项是要跟编译成功之后得到的可执行文件关联起来,现在咱们把 redis-server 和 redis-cli 可执行文件给生成了,也就可以将相应的编译配置与相应的可执行文件给关联起来,这步是必需的,关系到 redis 的成功运行与否。
将 redis-cli 编译配置与 redis-cli 可执行文件关联起来。
redis 运行
// 进入到 src/ 文件夹下
cd src/
// 运行 redis-server
./redis-server
// 运行 redis-cli
./redis-cli
运行成功!
上面只是在终端运行,下面咱们需要能在 clion 上运行,方便之后的调试工作。redis 的操作主要由 redis-cli 完成,因此咱们需要找到相应的 .c 文件,也就是 src/ 文件夹下的 redis-cli.c 。
找到 main 函数
由于咱们前面已经将编译配置与可执行文件关联起来,运行与调试可以正常执行。
点击 运行 按钮。
这时会发现下面这种问题,
为什么没有出现 127.0.0.1:6379>
这和在终端运行(下图)时情况不一样呐?
问题出现在一个叫 linenoise 的函数上
clion 上运行方式不受支持,导致采取第三种方式处理输入,咱们可以手动改变 linenoise 源码强制让其使用第二种输入处理方式。
比如直接将第二个 if 条件换成 1 ,强制使用第二种方式处理输入。
仅修改代码还不够,还需要对项目重新编译。而且 linenoise.c 是属于第三方依赖,咱们得优先重新编译这个第三方依赖。
删除 linenoise 动态链接库
注意取消勾选
之后选中 linenoise 文件夹下的 Makefile ,点击鼠标右键,选择 Run “MakeFile”,linenoise 就会重新编译生成 linenoise.o 动态链接库。
接着对 redis-cli 重新编译下,注意重新切换回 redis-cli
点击标签栏的 Build ,选择 Rebuild “redis-cli”,等待编译成功。
点击 运行 按钮,接下来就可以像在终端使用那样使用 redis 。
redis 调试
在调试模式下也能正常运行
结语
redis 执行成功,去享受调试 redis 源码带来的乐趣叭!