环境准备
系统环境
- 主机系统 :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
源码了。