官方 Redis 不支持 Windows 环境下构建运行,如希望在 Windows 环境下跟踪调试 Redis 源码,可使用 CLion 的远程开发模式。
1. 概述
CLion 的远程调试有两种模式:
Remote GDB Server:仅支持 cmake 项目,CLion 可自动构建二进制文件并上传到远程服务器,并自动调用 gdbserver 执行程序。
Remote Debug:可支持非 cmake 项目,需手动在远程服务器端完成首次构建,并将可执行文件和符号表下载到本地环境。
由于 Redis 通过 makefile 进行构建,并非 cmake 项目,所以需采用 Remote Debug 模式。
| Remote Debug | Remote GDB Server | |
|---|---|---|
| Project format | Any | CMake |
| Toolchain | Not specified | Default on macOS/Linux; MinGW, Cygwin, WSL on Windows; Remote and Docker toolchains also available |
| Path mappings | Not created automatically, should be set up in run/debug configuration | Not created automatically,should be set up in run/debug configuration |
2. 环境准备
本地系统: Windows(Windows 10)
远程系统: Linux(Ubuntu 22.04)
IDE: CLion 2023.2.5
Step 1: 安装依赖(远程 Linux)
sudo apt install gcc
sudo apt install g++
sudo apt install pkg-config
sudo apt install gdb
sudo apt install gdbserver
sudo apt install cmake
Step 2: 源码编译(远程 Linux)
# 下载 Redis 源码
wget https://github.com/redis/redis/archive/refs/tags/7.4.2.tar.gz
# 解压
tar -xvf 7.4.2.tar.gz
# 修改目录名称
mv redis-7.4.2 redis-7.4.2-stable
# 进入源码目录
cd redis-7.4.2-stable/
# 编译
make -j18 "CFLAGS=-g -O0"
Redis源码解压请在Linux系统端完成,否则编译时可能因为执行权限等因素导致编译失败。- 如前所述,采用
Remote Debug模式需在Linux系统端手动完成第一次编译。 CFLAGS="-O0":不开启编译优化。CFLAGS="-g":生成调试信息(用于GDB)。-j18:并发编译,其中18一般为 CPU 核心数,请自行根据硬件进行调整。
3. 远程调试配置
Step 1: 配置 SSH

Step 2: 配置 Toolchain

Step 3: 配置 Deployment
1、创建 Remote Host

2、建立目录映射

Step 4: 文件同步
1、选择远程服务器

2、下载文件

右键点击项目,选择 “Deployment” → “Download from Remote Development”,将文件从远程服务器下载到本地。
下载完成后,如下图所示,源码文件及编译的相关二进制文件均已下载到本地。

Step 5: 调试配置
1、获取应用列表
一般来说,CLion 会自动识别 makefile 项目,并自动创建如下图的应用列表。

如果没有自动创建如上图的可运行的应用列表,点击 “Tools” → “Makefile” → “Reload Makefile Project” 后将自动生成。

如果还是没有自动创建,那么你可能需要手动创建 “Makefile Application”。
2、指定可执行文件
Remote Debug 模式,需手动指定可执行文件,这里以 redis-server 为例进行说明。

Step 6: 开始调试
1、断点调试
添加断点,然后点击调试按钮,可以看到程序正常启动,并在断点处暂停。

2、代码修改
- 添加一行新代码
printf("redis remote debug start ----------\n"); - 点击
Run,CLion将自动调用远程服务器进行编译,并通过gdbserver运行对应执行文件。 - 如下图所示,可以看到代码修改生效,控制台打印出了新添加的信息。

注意事项
为了保证生成的二进制文件与代码一致,同样需在 CLion 中添加 Makefile 的构建参数。

4. Remote Debug 小结
Redis源码需在远程Linux端解压,并手动完成第一次编译。CLion中配置SSH、Toolchain和Deployment。- 源码和相关二进制文件都下载到本地
Windows。 CLion中指定应用程序对应的可执行文件后,即可运行和调试(无需在远程Linux手动运行gdbserver)。- 本地修改代码后,会自动上传。
- 点击
Run、Debug或Build按钮,会自动在远程Linux进行编译(无需在远程Linux手动编译)。
5. 其它方式
JetBrains 还提供了 Gateway 瘦客户端,用来连接远程服务器后台运行的 CLion ,同样也支持 makefile 项目的远程开发和调试。
这种方式更简单,但需在远程服务器安装和运行 CLion,感觉略有点重,后续有时间再聊。
6. 参考资料
https://www.jetbrains.com/help/clion/remote-development.html