环境准备
系统环境
- 主机系统 :Windows 11 专业版
- 子系统:Ubuntu 22.04.1 LTS
软件下载
自行下载安装 VSCode。
源码下载
可以直接从GitHub下载 redis/redis
git clone https://github.com/redis/redis.git
cd redis
git checkout 7.0.11
这样就切换到了7.0.11版本(可以根据自己的需求切换其它的版本)
调试配置
打开代码、安装插件
打开VSCode,ctrl+shift+p然后输入wls,选择Open Folder in WSL,打开之前下载的redis源码目录。

VSCode插件中搜索C/C++并安装。

配置debug
新建这两个文件

launch.json:
{
"version": "0.2.0",
"configurations": [
{
"name": "redis",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/src/redis-server",
"args": [
"redis.conf"
],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"preLaunchTask": "build",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}
]
}
tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "make",
"args": [
"CFLAGS=\"-g -O0\""
]
}
]
}
断点调试
可以在src/commands.c中搜索找到要调试的命令,比如set命令:

如图所示,set命令对应的是setCommand函数,可以到setCommand中打断点:

启动调试命令:

成功后会启动redis-server:

本地连接并输入set命令:

可以看到,命令正常阻塞到了断点处,后面就可以愉快的调试学习Redis源码了。
该文介绍了如何在Windows11环境下,利用Ubuntu子系统和VSCode进行Redis源码的调试。首先,下载并安装VSCode,然后从GitHub克隆Redis源码至7.0.11版本。接着,配置VSCode的launch.json和tasks.json文件以支持C/C++调试,并设置断点。最后,启动调试并观察Redis命令如set的执行情况。

被折叠的 条评论
为什么被折叠?



