调试Redis
几种常见的调试方法
-
Windows
- linux虚拟机 + gdb server 远程调试
- msvc + msvc debug (使用 Visual studio 调试)
- cygwin + gdb 调试 (使用CLion)
- linux子系统 + lldb
-
Linux/Unix
- gdb 命令行调试
- GUI 调试 (VS Code或CLion)
-
MacOS
- lldb (VS Code)
推荐的方法:
- Linux系统 + Clion/VSCode 调试
- Win系统 + Linux 虚拟机编译 + gdb-server 远程调试
- Win系统 + MSVC 编译 + Visual Studio 调试
- Mac系统 + lldb 调试
linux系统下 clion 调试
下载源码后打开,clion支持自动识别makeFile配置,先执行 make 编译,然后如下图,配置redis-server路径,即可调试。

linux-vm-with-gdb-server-on-windows-host
在 Windows上安装linux虚拟机, linux 虚拟机中使用 gdb-server, windows中使用Clion或VSCode进行调试。
-
安装linux虚拟机
-
安装 gcc gdb gdb-server
-
下载源码

-
在虚拟机中编译 redis
make CFLAGS="-g -O0" # 不使用gcc优化, 方便调试 -
启动 gdb-server
gdbserver :8088 redis-server
-
主机端使用Clion调试
- 配置一个gdb remote debug

- 启动调试

- 配置一个gdb remote debug
msvc + msvc debug (Visual Studio)
此方法需要安装 Visual Studio的C/C++ 支持,和 Windows SDK,占用空间较大, 如果已经安装了VS, 则推荐。
- 下载源码
感谢github上的tporadowski/redis项目 - 安装 Visual Studio, 安装 C/C++ 支持
- 生成 release.h 文件
执行 src/mkreleasehdr.sh 生成 release.h 文件(可使用 git-bash 或 Cygwin) - 调试

Linux gdb 命令行调试
- 下载 redis 源码
- 安装 gcc gdb
- make CFLAGS="-g -O0"
# 进入 redis 源代码根目录, 使用 make CFLAGS="-g -O0" , 在编译redis的源码时, 不进行编译优化, 添加调试信息
# O0 -->> O1 -->> O2 -->> O3 -O0表示没有优化,-O1为缺省值,-O3优化级别最高
make CFLAGS="-g -O0"
- 使用gdb 调试
编译完成后, 使用gdb命令行进行调试
cd ./src
gdb redis-server # 即可进入 gdb 调试模式
输出

gdb 常用命令
(gdb) # 回车, 重复上次
(gdb) l # list 列出源码
(gdb) layout src # 进入多窗口模式
(gdb) b main # break main , 断点在 main方法
(gdb) break 16 # 断点在16行
(gdb) bt # 查看堆栈
(gdb) info #
(gdb) p <arg> # print 查看变量值
(gdb) r # run
(gdb) n # next 运行到下一行
(gdb) c # continue 继续运行
(gdb) step # 进入方法里面
(gdb) finish # 跳出当前方法
浙公网安备 33010602011771号