使用CLion在Windows下调试Redis代码

调试方式

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

需求

  • 一台Linux主机

    云服务器、虚拟机、WSL、Docker都可以,只要你电脑可以通过ssh连接上它。
  • Windows 下安装 CLion

具体步骤

  1. 在Windows下安装CLion。
  1. 登录到Linux,先安装依赖:

    Centos:

    yum install git  cmake make gcc gcc-c++ gdb libarchive telnet

    Ubuntu:

    sudo apt update
    sudo apt install git  cmake 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代码_第1张图片

  4. 点击菜单栏File > Settings打开设置面板。继续找到Editor > Code Style,把换行符改为\n

    使用CLion在Windows下调试Redis代码_第2张图片

  5. 继续在设置面板找到Build, Execution, Deployment > Toolchians,点击+号新增一个Remote Host

    使用CLion在Windows下调试Redis代码_第3张图片

  1. 点击Credentials输入框右边的齿轮图标:

    使用CLion在Windows下调试Redis代码_第4张图片

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

    使用CLion在Windows下调试Redis代码_第5张图片

  2. 保存服务器信息后继续配置ToolChains。这时会自动识别服务器上的编译工具的路径,如果不能自动识别,可以手动填进去,然后点击Apply保存。

    使用CLion在Windows下调试Redis代码_第6张图片

  1. 切换到Build, Execution, Deployment > CMake,在ToolChains输入框选择Remote Host

    使用CLion在Windows下调试Redis代码_第7张图片

  2. 切换到Build, Execution, Deployment > Deployment,再依次点击Remote HostMappings,然后输入Linux主机上redis代码的目录,然后点击OK保存并关闭配置窗口。

    使用CLion在Windows下调试Redis代码_第8张图片

  3. 依次点击菜单栏Tools > Deployment > Download From ... > Remote Host,然后等待代码从服务器上同步下来(右下角有进度条)。

    使用CLion在Windows下调试Redis代码_第9张图片

  4. 代码同步成功后,CLion还没有识别Makefile文件。在左侧文件目录双击打开Makefile文件,然后点击load Makefile Project:

    使用CLion在Windows下调试Redis代码_第10张图片

  1. 再打开设置面板,找到Build, Execution, Deployment > MakeFile,在ToolChains下拉框中选择"Remote Host",然后保存。

    使用CLion在Windows下调试Redis代码_第11张图片

  1. 保存后CLion会自动上传代码到服务器、开始编译。等待一会,可能会提示编译失败:

    使用CLion在Windows下调试Redis代码_第12张图片

  1. 在“编译”图标旁边的下拉框选择Edit Configurations

    使用CLion在Windows下调试Redis代码_第13张图片

  2. 在弹窗左侧选择redis-server,并在Executable中输入src/redis-server。这是redis编译后的二进制脚本。

    使用CLion在Windows下调试Redis代码_第14张图片

  3. 点击锤子图标,开始编译:

    使用CLion在Windows下调试Redis代码_第15张图片

  1. 大概一两分钟后,编译完成。

    使用CLion在Windows下调试Redis代码_第16张图片

  1. 搜索代码void getCommand(),找到t_string.c/getCommand(),打上断点:

    使用CLion在Windows下调试Redis代码_第17张图片

  1. 点击蜘蛛图标,开始调试!

    使用CLion在Windows下调试Redis代码_第18张图片

> 这时候服务器上会运行redis-server,并监听6379端口,你可以通过`netstat -an`命令查看
  1. 在服务器上使用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代码_第19张图片

你可能感兴趣的:(使用CLion在Windows下调试Redis代码)