调试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 # 跳出当前方法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)