阅读源码的方式:
通过vscode来进行源码阅读,在redis-server执行的过程中,在想要阅读的部分打上断点,在redis-cli发送命令的时候,就会停在断点上,这样一步步阅读更加合适。
首先下载来redis7.0源码官网下载,解压
1.在vscode中打开redis7.0文件目录
2.配置task.json
ctrl+shift+p进入下面,界面,选择配置任务(Configure Task),就会生成task.json
task.json配置如下
进行make操作
{ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "2.0.0", "tasks": [ { "type": "shell", "label": "redis-build", "command": "/usr/bin/make", "args": ["MALLOC=libc"], "options": { "cwd": "${workspaceFolder}" }, "problemMatcher": "$gcc", "group": "build", "detail": "" } ] }
3.配置launch.json
由于make后会在src中生成redis-server
因此执行的program为"${workspaceFolder}/src/redis-server"
指定配置文件"redis.conf"
工作目录“${workspaceFolder}”
指定启动前的Task任务(先build),“preLaunchTask”: “redis-build”
{ // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "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", "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true }, ], "preLaunchTask": "redis-build" } ] }
4.启动
下面这样就说明启动成功了
也可以通过下面命令,查找到运行的redis-server
ps aux|grep redis-server
5.安装遇到的一些问题
jemalloc/jemalloc.h: No such file or directory
make MALLOC=libc
在task.json中已经加入
6.如何打断点和阅读源码
以string数据结构中的 set命令为例,如何查看它的源码呢?
在vscode中ctrl+p然后输入command.c,找到这个源文件
在string数据结构下,很快就能找到set命令
在set这一行,可以找到调用的函数 setCommand
,并进入
然后打上断点
然后在redis-cli中执行set操作
这边就会停在断点处