MAC上用CLion调试Redis源码及报错排查

(本文仅作为记录,还有待完善的地方)

问题点:Clion 使用了 cmake 来管理项目,所以我们需要在 Redis 源码根目录下为它创建好 CMakeLists.txt 才能进行构建。

尝试调试最新版Redis报错排查

刚开始参考 mac + CLion + redis5 本地调试/运行 进行调试,过程中遇到了一些新的问题,记录如下:

deps/hiredis/CMakeLists.txt
CMake Error at deps/hiredis/CMakeLists.txt:168 (add_library):
  add_library cannot create target "hiredis" because another target with the
  same name already exists.  The existing target is a shared library created
  in source directory "/Users/cfq/CLionProjects/redis/deps/hiredis".  See
  documentation for policy CMP0002 for more details.


-- Configuring incomplete, errors occurred!
See also "/Users/cfq/CLionProjects/redis/CMakeFiles/CMakeOutput.log".

应该是因为新版本的代码,作者已经在 deps/hiredis/目录下加了 CMakeLists.txt文件,照着这个文章里的步骤三会有重复添加,所以把刚才添加的删了就好。

再次执行cmake .,结果如下:

$ cmake .
Detected version: 1.0.0
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/cfq/CLionProjects/redis

说明 cmake操作已经好了。

ae_kqueue.c

之后执行 make命令,出现了ae_kqueue.h文件的错误,因为mac和linux的异步机制用到的库不一样,所以需要修改;

在ae_kqueue.c文件中添加下面两行即可。

  #include "ae.h"
  #include "zmalloc.h"

修改后,再次make,又报如下错误:

[ 34%] Building C object CMakeFiles/redis-server.dir/src/ae_kqueue.c.o
/
### 配置和调试 Redis 源码 要在 CLion 中成功配置并调试 Redis 源码,可以按照以下方式进行操作: #### 1. 安装依赖项 在 macOS 上运行 Redis 和其插件(如 RedisBloom),需要安装一些必要的开发工具和库。可以通过 Homebrew 来简化这一过程: ```bash brew install redis gcc cmake ``` 这一步确保了系统中有足够的编译器支持以及 Redis 所需的环境。 #### 2. 下载 Redis 源码 从官方仓库获取指定版本的 Redis 源码文件,并解压到工作目录下。例如: ```bash wget http://download.redis.io/releases/redis-4.0.12.tar.gz tar xzf redis-4.0.12.tar.gz cd redis-4.0.12 ``` 对于更高版本的 Redis(如 Redis 6 或以上),也可以通过 Git 获取最新的稳定分支: ```bash git clone https://github.com/redis/redis.git cd redis git checkout 6.x-stable ``` #### 3. 创建 CMakeLists 文件 如果项目中尚未存在 `CMakeLists.txt` 文件,则需要手动创建一个适合 Redis 的构建脚本。以下是适用于 Redis 的基本模板[^1]: ```cmake cmake_minimum_required(VERSION 3.5) project(redis) set(CMAKE_C_STANDARD 99) add_executable(redis-server src/redis.c src/networking.c src/object.c ... ) target_include_directories(redis-server PRIVATE deps/hiredis) ``` 注意:上述省略号部分应包含所有 Redis 源代码中的 `.c` 文件路径列表。 #### 4. 设置 CLion 工程结构 打开 CLion 并导入 Redis 源码所在的文件夹作为新工程。确认项目的 CMake 版本匹配当前系统的设置,并调整任何缺失的头文件链接问题。 #### 5. 编译选项优化 为了能够正常打断点调试程序执行流程,建议采用无优化模式重新编译目标二进制文件。具体做法是在终端里切换至源码根目录后输入命令[^4]: ```bash make noopt ``` 此参数会禁用 GCC 默认启用的各种性能增强措施,从而让 GDB 更容易跟踪函数调用链路。 #### 6. 启动调试会话 回到 IDE 内部界面定义一个新的本地应用启动配置——指向刚才生成好的可执行文件位置;接着点击绿色三角形按钮即可进入单步追踪状态观察内部变量变化情况。 --- ### 注意事项 由于不同操作系统之间可能存在细微差异,请参照特定平台上的指南完成相应准备工作。比如针对 Mac 用户来说,除了上面提到的内容外还需要额外关注 Xcode Command Line Tools 是否已经正确安装等问题[^2]。 此外值得注意的是,随着软件迭代更新速度加快,某些旧教程里的细节可能会有所改变,因此当遇到困难时不妨查阅最新发布的官方文档或者社区讨论帖寻找解决方案[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值