如何在 VSCode 去调试 Redis源码

本文介绍了如何从GitHub下载Redis源码,并利用VisualStudioCode创建task.json和launch.json文件来配置编译、运行和调试环境。通过执行预设的任务,可以在本地以Debugger模式启动Redis服务器,便于学习和理解Redis的内部工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习使用 Redis 时,从 GitHub 下载 Redis 源码是个不错的选择。在下载后,通过创建 task.json 和 launch.json 两个文件,可以方便地在本地进行 Redis 的编译、运行和调试。通过这些步骤,你可以更好地理解 Redis 的内部实现,并快速上手使用 Redis。

首先,从 GitHub 下载 Redis 源码:

Redis GitHub 链接:https://github.com/redis/redis

其次,在根目录下创建这两个文件:

创建 task.json 文件

{
  "version": "2.0.0",
  "tasks": [
      {
          "label": "Clean",
          "type": "shell",
          "command": "make",
          "args": [
              "clean"
          ],
          "problemMatcher": []
      },
      {
          "label": "Compile",
          "type": "shell",
          "command": "make",
          "problemMatcher": []
      },
      {
          "label": "Build",
          "dependsOn": [
              "Clean",
              "Compile"
          ]
      },
      {
          "label": "writeRedisPID",
          "type": "shell",
          "command": "ps -ef | grep 'redis-server' | grep -v grep | awk '{print $2}' > /tmp/redis.pid"
      }
  ]
}

创建 launch.json 文件

{
  "version": "0.2.0",
  "configurations": [
      {
          "name": "Redis Server Run",
          "type": "cppdbg",
          "request": "launch",
          "program": "${workspaceFolder}/src/redis-server",
          "args": [],
          "stopAtEntry": false,
          "cwd": "${fileDirname}",
          "environment": [],
          "externalConsole": false,
          "MIMode": "lldb",
          "preLaunchTask": "Build"
      },
      {
          "name": "Redis Server Attach",
          "type": "cppdbg",
          "request": "attach",
          "processId": "${input:redisPID}",
          "program": "${workspaceFolder}/src/redis-server",
          "args": [],
          "stopAtEntry": false,
          "cwd": "${fileDirname}",
          "environment": [],
          "externalConsole": false,
          "MIMode": "lldb",
          "preLaunchTask": "writeRedisPID",
          "subProcess": true,
          "justMyCode": true,
          "redirectOutput": true,
      }
  ],
  "inputs": [
      {
        "id": "redisPID",
        "type": "command",
        "command": "extension.commandvariable.file.content",
        "args": {
          "fileName": "/tmp/redis.pid"
        }
      }
    ]
}

F5 运行,可以看到,Redis 以 Debugger 形式跑起来:

### 配置 VSCode 调试 Redis 源码 为了在 VSCode 中成功调试 Redis 源码,建议使用 Linux 环境下的 WSL(Windows Subsystem for Linux),这能提供更稳定和高效的开发体验[^3]。 #### 安装并配置 WSL 和 Redis 源码 确保已安装 WSL 并设置了合适的 Linux 发行版。接着,在 WSL 终端中克隆 Redis 的官方仓库到本地机器上: ```bash git clone https://github.com/redis/redis.git ~/projects/ cd ~/projects/redis make distclean && make -j$(nproc) ``` 上述命令会清理旧编译文件并尽可能多地利用 CPU 核心数加速构建过程[^1]。 #### 打开项目于 VSCode 内 通过快捷键 `Ctrl+Shift+P` 召唤命令面板,输入 `WSL: Open Folder in WSL...` 来选取先前下载好的 Redis 源码所在位置[^5]。 #### 创建 launch.json 文件用于启动调试会话 创建 `.vscode` 文件夹并在其中放置名为 `launch.json` 的 JSON 文件,其内容如下所示[^4]: ```json { "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch redis-server with config", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/src/redis-server", "args": ["${workspaceFolder}/redis.conf"], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "build_redis" } ] } ``` 此配置指定了 GDB 作为调试器,并设定了要运行的目标程序及其参数;还定义了一个预启动任务 `"preLaunchTask"` ,该任务将在每次开始调试前自动重新编译 Redis。 #### 编写 tasks.json 自动化编译流程 同样位于 `.vscode` 下新建或编辑现有的 `tasks.json` 文件,加入下面的内容以便实现一键编译功能: ```json { "version": "2.0.0", "tasks": [ { "label": "build_redis", "type": "shell", "command": "make -C ${workspaceFolder} -j$(nproc)", "group": { "kind": "build", "isDefault": true }, "problemMatcher": [] } ] } ``` 这段脚本会在调用时进入工作区根目录执行 Makefile 构建指令,从而保证最新版本的二进制文件始终可用。 完成以上步骤之后就可以直接点击左侧边栏中的“Run and Debug”图标选择刚才建立过的 `(gdb) Launch redis-server with config` 开始调试了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值