使用CLion在Windows下调试Redis代码

调试方式 这个教程使用的是远程调试(不是远程桌面),代码在Linux下编译和运行,调试客户端在Windows(或者Mac,以下简称Windows)。这样调试的好处是调试环境与真实环境一致,都在Linux运行。
需求

  • 一台Linux主机
    云服务器、虚拟机、WSL、Docker都可以,只要你电脑可以通过ssh连接上它。
  • Windows 下安装 CLion
具体步骤
  1. 在Windows下安装CLion。
  1. 登录到Linux,先安装依赖:
    Centos:
    yum install gitcmake make gcc gcc-c++ gdb libarchive telnet

    Ubuntu:
    sudo apt update sudo apt install gitcmake make gcc g++ gdb

  2. 下载Redis源代码到Linux:
    git clone https://github.com/redis/redis.git

  1. 切换Redis代码到你想要调试的版本:
    cd redis git checkout 5.0.8

  2. 在Windows下创建一个空文件夹debug-redis
    不需要把代码clone进来,稍后会从Linux主机上同步过来。如果clone到Windows,再把代码传到Linux,会出现文件权限不对、换行符不对等问题导致编译出现奇奇怪怪的错误。
  3. 启动Clion,点击Open打开刚刚创建的空文件夹debug-redis:
    使用CLion在Windows下调试Redis代码
    文章图片

  4. 点击菜单栏File > Settings打开设置面板。继续找到Editor > Code Style,把换行符改为\n
    使用CLion在Windows下调试Redis代码
    文章图片

  5. 继续在设置面板找到Build, Execution, Deployment > Toolchians,点击+号新增一个Remote Host
    使用CLion在Windows下调试Redis代码
    文章图片

  1. 点击Credentials输入框右边的齿轮图标:
    使用CLion在Windows下调试Redis代码
    文章图片

  1. 然后在弹框中点击+号新增一个服务器,填写服务器IP地址、ssh的用户名和密码,然后点击Test Connection,测试可以连接后保存。
    使用CLion在Windows下调试Redis代码
    文章图片

  2. 保存服务器信息后继续配置ToolChains。这时会自动识别服务器上的编译工具的路径,如果不能自动识别,可以手动填进去,然后点击Apply保存。
    使用CLion在Windows下调试Redis代码
    文章图片

  1. 切换到Build, Execution, Deployment > CMake,在ToolChains输入框选择Remote Host
    使用CLion在Windows下调试Redis代码
    文章图片

  2. 切换到Build, Execution, Deployment > Deployment,再依次点击Remote HostMappings,然后输入Linux主机上redis代码的目录,然后点击OK保存并关闭配置窗口。
    使用CLion在Windows下调试Redis代码
    文章图片

  3. 依次点击菜单栏Tools > Deployment > Download From ... > Remote Host,然后等待代码从服务器上同步下来(右下角有进度条)。
    使用CLion在Windows下调试Redis代码
    文章图片

  4. 代码同步成功后,CLion还没有识别Makefile文件。在左侧文件目录双击打开Makefile文件,然后点击load Makefile Project:
    使用CLion在Windows下调试Redis代码
    文章图片

  1. 再打开设置面板,找到Build, Execution, Deployment > MakeFile,在ToolChains下拉框中选择"Remote Host",然后保存。
    使用CLion在Windows下调试Redis代码
    文章图片

  1. 保存后CLion会自动上传代码到服务器、开始编译。等待一会,可能会提示编译失败:
    使用CLion在Windows下调试Redis代码
    文章图片

  1. 在“编译”图标旁边的下拉框选择Edit Configurations
    使用CLion在Windows下调试Redis代码
    文章图片

  2. 在弹窗左侧选择redis-server,并在Executable中输入src/redis-server。这是redis编译后的二进制脚本。
    使用CLion在Windows下调试Redis代码
    文章图片

  3. 点击锤子图标,开始编译:
    使用CLion在Windows下调试Redis代码
    文章图片

  1. 大概一两分钟后,编译完成。
    使用CLion在Windows下调试Redis代码
    文章图片

  1. 搜索代码void getCommand(),找到t_string.c/getCommand(),打上断点:
    使用CLion在Windows下调试Redis代码
    文章图片

  1. 点击蜘蛛图标,开始调试!
    使用CLion在Windows下调试Redis代码
    文章图片

> 这时候服务器上会运行redis-server,并监听6379端口,你可以通过`netstat -an`命令查看

  1. 【使用CLion在Windows下调试Redis代码】在服务器上使用telnet 127.0.0.1 6379连接到redis(或者redis-cli),然后使用get命令获取一个key:
    [root@VM-8-5-centos ~]# telnet 127.0.0.1 6379 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. get hello

  2. 这时候程序就会停在刚刚的断点位置。你可以使用F7( step in)、F8( step out)来调试代码了。
    使用CLion在Windows下调试Redis代码
    文章图片

    推荐阅读