使用CLion调试Redis源码的超详细步骤

因为我本人主要是写Java的,有强烈的IDE依赖症,不喜欢使用文本编辑器或者命令行这样的工具,所以选择使用CLion搭建一个IDE环境来辅助阅读。但是CLion主要支持的是CMake管理的项目,而Redis是用普通的Makefile管理的,所以需要一些技巧来配置环境。

支持跳转


CLion从2018.2版本开始支持通过compiledb来让Makefile的项目支持跳转重构等高级功能。

首先安装compiledb:

pip install compiledb

务必在用CLion打开Redis项目之前进入Redis根目录,运行下面的命令:

compiledb -nf make

之后会在项目根目录下生成一个compile_commands.json文件。

之后再用CLion打开Redis项目,这样CLion就会自动检测到compile_commands.json,就可以读Redis源码时进行各种跳转了。

调试Redis


完成上面的步骤后,依旧只能把CLion当个阅读器来读代码,无法单步调试的话还是不方便理解源码。

经过一番研究,发现可以使用CLion的"GDB Remote Debug"的功能对Redis的二进制结合源码进行调试。

首先,要编译出一个专门用于debug的二进制,make默认采用的编译优化级别的是-O2,代码优化会影响我们调试,所以我们编译一个没有优化的版本便于调试:

make noopt

之后使用gdbserver来执行该二进制(如果还有安装的话,就先安装gdbserver):

gdbserver :43211 ./src/redis-server

上面命令表示在43211端口启动一个gdbserver,用于调试二进制./src/redis-server

之后在CLion上进行配置Run -> Edit Configurations

CLion conf

打好断点,点击右上角的小虫子,就可以开心地调试Redis了。

调试的截图如下:

CLion debug

目前发现该调试方法的一个问题就是当gdbserver退出后,它所启动的二进制进程依旧不会退出,需要手动kill一下,以免占用端口影响下次debug:

$ ps -ef | grep ./src/redis
dqyuan   11842     1  0 21:40 pts/5    00:00:00 ./src/redis-server *:6379
dqyuan   12266 26302  0 21:43 pts/2    00:00:00 grep --color=auto ./src/redis
$ kill -9 11842

参考文章


End


作者:元青

微信公众号 「技乐书香」

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值