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

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 因为我本人主要是写Java的,有强烈的IDE依赖症,不喜欢使用文本编辑器或者命令行这样的工具,所以选择使用CLion搭建一个IDE环境来辅助 Redis 源码阅读。

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

支持跳转


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

首先安装compiledb:

pip install compiledb

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

compiledb -nfmake

之后会在项目根目录下生成一个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.png

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

调试的截图如下:

clion-debug.png

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

$ ps-ef | grep ./src/redis
dqyuan   118421021:40 pts/5    00:00:00 ./src/redis-server *:6379
dqyuan   1226626302021:43 pts/2    00:00:00 grep--color=auto ./src/redis
$ kill-911842

参考文章


End


作者:元青


微信公众号 「技乐书香」

相关文章
|
5月前
|
机器学习/深度学习 数据采集 人机交互
springboot+redis互联网医院智能导诊系统源码,基于医疗大模型、知识图谱、人机交互方式实现
智能导诊系统基于医疗大模型、知识图谱与人机交互技术,解决患者“知症不知病”“挂错号”等问题。通过多模态交互(语音、文字、图片等)收集病情信息,结合医学知识图谱和深度推理,实现精准的科室推荐和分级诊疗引导。系统支持基于规则模板和数据模型两种开发原理:前者依赖人工设定症状-科室规则,后者通过机器学习或深度学习分析问诊数据。其特点包括快速病情收集、智能病症关联推理、最佳就医推荐、分级导流以及与院内平台联动,提升患者就诊效率和服务体验。技术架构采用 SpringBoot+Redis+MyBatis Plus+MySQL+RocketMQ,确保高效稳定运行。
416 0
|
NoSQL 关系型数据库 MySQL
2024Mysql And Redis基础与进阶操作系列(4-2)作者——LJS[含MySQL非空、唯一性、PRIMARY KEY、自增列/自增约束举例说明等详解步骤及常见报错问题对应的解决方法]
24MySQL非空、唯一性、PRIMARY KEY、自增列/自增约束举例说明等详解步骤及常见报错问题对应的解决方法(4-2) 学不会你来砍我!!!
|
10月前
基于springboot+thymeleaf+Redis仿知乎网站问答项目源码
基于springboot+thymeleaf+Redis仿知乎网站问答项目源码
314 36
|
10月前
|
关系型数据库 MySQL 应用服务中间件
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
364 7
|
NoSQL Linux PHP
如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤
本文介绍了如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤。接着,对比了两种常用的 PHP Redis 客户端扩展:PhpRedis 和 Predis,详细说明了它们的安装方法及优缺点。最后,提供了使用 PhpRedis 和 Predis 在 PHP 中连接 Redis 服务器及进行字符串、列表、集合和哈希等数据类型的基本操作示例。
509 4
|
NoSQL 安全 关系型数据库
2024Mysql And Redis基础与进阶操作系列(6)作者——LJS[含MySQL 多表之一对一/多;多对多;多表联合查询等详解步骤及常见报错问题所对应的解决方法]
MySQL 多表之一对一/多;多对多;多表联合之交叉连接;内连接;左、右、外、满、连接;子查询及关键字;自连接查询等详解步骤及常见报错问题所对应的解决方法
|
SQL NoSQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(5)作者——LJS[含MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页等详解步骤及常见报错问题所对应的解决方法]
MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页、INSERT INTO SELECT / FROM查询结合精例等详解步骤及常见报错问题所对应的解决方法
|
SQL NoSQL 关系型数据库
|
存储 SQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(1)作者——LJS[含MySQL的下载、安装、配置详解步骤及报错对应解决方法]
Mysql And Redis基础与进阶操作系列(1)之[MySQL的下载、安装、配置详解步骤及报错对应解决方法]
下一篇
oss云网关配置