redis debug环境搭建过程详解(使用clion)

目录
  • 概要
  • 环境搭建的大体思路
    • windows下安装linux工具链
    • 什么是make和cmake
    • 安装c语言开发的ide
  • 具体安装步骤
  • cygwin安装
  • clion安装及插件安装
  • 克隆redis 代码
  • 如何调试
  • 如何调试redis-server

概要

最近写了spring系列,这个系列还在进行中,然后有些同学开始叫我大神,然后以为我各方面都比较厉害,当然了,我是有自知之明的,大佬大神什么的,当作一个称呼就好,如果真的以为自己就是大神,那可能就走偏了。

其实我不少方面都比较薄弱,比如redis、mysql、jvm这些c语言写的东西,很多书,我也看过多次,看的那段时间,你可能懂了,也可以在面试的时候,侃侃而谈,但是,过一阵再问你,你可能部分细节已经记不住了。

我现在本科毕业快7年,虽然这些年一直也在学,但是记忆这东西,好像是有些退化,记个东西,感觉确实越来越容易忘;尤其,是这些平时光看不练的东西。

所以,打算在实践中,来掌握这些东西。

比如,你说redis的字符串的底层实现,很多人可能都能答上来,是sds,但是只是看,只是记,这种简单的还好,复杂一点的,两个月肯定忘。

所以,我们就希望,能够把redis的源码拉下来看,看的过程,你可以自己在源文件里加注释;同时,也要支持debug,来观察程序的运行过程,来看看,一个请求进来,是怎样编解码,怎么样被处理的,怎么样返回结果的,网络通信怎么做的,这之类的。

我们选择的代码,是Redis畅销书,Redis设计与实现(第二版)里配套的代码,作者已经加了很多注释,我们可以结合代码、书一起来学习,合适的情况下,我们也要能写一个小demo,实践实践。

所以,第一步的环境搭建尤为重要,而且,redis看懂了,相信以后看mysql,也不会问题特别大。当然,需要一些c语言基础,我也会在文章里讲一些,我自己也是半斤八两,边看边学呗,还能怎么样呢?

这个系列,估计会更新比较慢,因为我的c语言基础,也不是很好。

好了,我们开始吧。

环境搭建的大体思路

windows下安装linux工具链

大家记得在linux上,怎么安装redis那些的吧,是不是有个configure,make,make install啥的,为啥java程序不需要这么弄呢?因为java有jvm,我们的java文件是编译成class,在jvm上运行的,而c语言程序,是直接依赖于操作系统的,同样的c语言程序,比如你要实现网络功能,在windows上和在linux上,要调用的api,是不一样的,总之呢,就是c语言程序,是严重依赖于底层的操作系统。

切回正题,在linux下我们是用gcc来编译c语言程序的,比如,针对以下这个简单的helloWorld:

#include <stdio.h>

int main(void) {
    printf("hahha");
    return 0;

}

要像下面这样,用gcc编译为二进制,才能继续执行:

gcc、make这些都是linux下的工具,在windows下怎么办呢?这个不用担心,早有人帮我们弄好了,前辈们将这些linux下的工具,移植到了windows下,现在有两种主流方案,一种是MinGW,另一种是cygwin。

我们只需要安装这两种软件中的一种,就可以在windows下使用本来在linux下才能使用的工具了,上面那个图,就是我在windows下截的。

至于MinGW和cygwin的差别,大家自行去查询,因为我找了些答案,感觉都有些冲突。我们的需求比较简单,两种都可以满足,我这边选择了cygwin,建议大家和我这边保持一致。

cygwin呢,在安装过程中,会让我们选择要安装的工具,比如gcc、g++(c++时候使用)、make、cmake等,我们可以按需选择。

什么是make和cmake

大家参考这个链接:CMake与Make最简单直接的区别

看完这个之后,我再简单说说,我的理解是,一个程序,在linux下运行,你要写一份makefile;如果要弄到其他平台,这个makefile就用不了了,要再写一份。

所以,为了跨平台,出现了cmake,cmake是让程序员用统一的语法来写cmake文件,然后cmake会帮助我们生成对应的平台下的makefile。

果然是,没有什么是加一个中间层不能解决的。

对于java的同学,可理解为:cmake就像jvm一样,帮助我们跨平台。

cmake呢,也是通过前面的cygwin来安装的。

安装c语言开发的ide

这个呢,我咨询了两位朋友,做c的,然后他们都是用的visual studio,我一开始也是下载这个,但是比较大,我下载的visual studio 2012(应该是比较老的版本了),都要1.5g,下载花了就比较久,安装又是半个小时,然后装完还不怎么会用;

在上面的vs下载的过程中,我在网上找了下,也有很多使用jetbrains公司出的 clion。这个呢,我目前就是用的这款,最大的好处是,它和idea、pycharm这些一样,同一个公司出的,所以,操作界面、操作习惯、包括快捷键,几乎都是差不多的,可以无缝切换。

一开始,我安装的是clion 2018.3 版本,然后遇到个问题,也不知道怎么解决,就又下了clion 2019.1版本,问题还是没解决,最后换了clion 2019.3版本,问题还是在,不过虽然问题一直在,但其实也无关大局,就忍一忍算了。

期间,visual studio 2012终于下载完了,装了半个小时多,发现用着还是不太习惯,而且,好像不太支持导入cmake工程,干脆就卸了,结果,卸载又花了半天,因为它给我的电脑,装了近20个软件。。。我他么。。。

所以,最终我这边的ide是 clion 2019.3,下载链接:clion 2019.3 链接

Clion2020.2.x最新激活码破解版附安装教程(Mac Linux Windows)

具体安装步骤

cygwin安装

安装前,先下载,下载链接:cygwin官网,在这里,目前下载下来的版本,是3.1.4.1,为什么要强调版本,因为clion,不同的clion版本,支持的 cygwin版本不一样,我看网上都没人提过。

clion为啥要依赖cygwin,因为clion只是个ide,具体的代码编译之类的,还是要gcc、cmake这些来做的,我给大家看下,我一开始下载的2018.3版本,配置了我的cygwin之后,提示如下:

这也是为什么后来,遇到问题我要升级版本的原因,因为我总感觉,有可能是这里的问题,虽然升级了版本,问题也还在。

建议大家还是和我版本保持一致。

  • cygwin:3.1.4.1
  • clion:2019.3

大概的安装步骤,可以看这个:

https://www.jb51.net/article/187586.htm

https://www.jb51.net/article/193502.htm

注意的是,下面这个路径要记住,后面会用:

然后,在设置镜像网站时,我是用的阿里云:http://mirrors.aliyun.com/cygwin/

接下来,就是让我们选择要安装的东西,网上一般给的就是如下几个:

gcc-core、gcc-g++、make、gdb、binutils ,我建议大家把vim也装上,方便操作。

然后就是等它安装完成,完成后,桌面上会有如下图标:

然后,双击打开,可以依次执行以下命令:

  • cygcheck -c cygwin ,查看安装的cygwin版本信息
  • gcc --version ,查看安装的gcc版本信息,这个是编译c的
  • g++ --version,查看安装的g++版本信息,这个是编译c++的
  • gdb --version,查看gdb版本信息,这个是debug用的,非常出名

如果都没啥问题的话,那基本就安装好了。

然后,大家还记得前面安装时,选择的路径吗?把那个路径的bin目录,加到path这个环境变量,然后我们就可以在cmd里用上面那些命令了。

clion安装及插件安装

下载链接:clion 2019.3 链接

这个的安装,和idea的安装,没啥差别,不过大家不要选太多插件,很多毕竟用不上,按需选择吧。比如什么cvs、svn那些,装了干啥呢,对吧。

然后我自己直接用的试用30天,等到后续真需要破解再说。

安装过程中,可能就会让大家配置tool chains,直接输入前面的cygwin的目录即可。

从上面可以看到,我们这里,用的cmake,就是cygwin下的,gdb也是的。

然后,我们可以再安装两个插件(Cmake Sinple highlighter 和 CMake Plus),如下:

其中一个要付费,不过可以先试用。

克隆redis 代码

地址:https://gitee.com/ckl111/redis-3.0-annotated-cmake-in-clion

这里感谢前辈博客:https://www.jb51.net/article/218312.htm

我这里基于他的博客,对cmake 文件,做了少许的修改。

大家把代码克隆到本地后,然后在clion中,打开工程即可。

打开工程后,大家要注意上面的CMakeList.txt,其中,已经默认给我们配置了几个target:

其中,库应该是不能独立运行的,我们可以运行下面的三个,其中:

  • redis-cli,redis客户端
  • redis-server,服务端
  • redis-example,这个是我自己加的,主要是希望:可以像在java中那样,启动一个main方法,去测试一些工具类啊或者啥的,不然的话,就得写到redis-server的代码中,然后用redis-cli去访问,去触发我们的测试代码。主要是类似于一个测试用的入口。

redis-example,我还多说一点,仔细看CmakeList.txt,可能就理解了:

如何调试

拿redis-example举例:

不过这里的debug,有一点问题,就是会开一个单独的cmd窗口,而不是直接在Console中输出;printf也有点问题。

但是,使用run方式运行,则没有任何问题。

如何调试redis-server

方法和上面一样,其实大家更关心断点打在哪儿吧,可以打在下面这个地方:

redis.c文件的processCommand,这里我还加了一行注释给大家:

int processCommand(redisClient *c) {
    /* The QUIT command is handled separately. Normal command procs will
     * go through checking for replication and QUIT will cause trouble
     * when FORCE_REPLICATION is enabled and would be implemented in
     * a regular command proc. */
    // 特别处理 quit 命令
    void *commandName = c->argv[0]->ptr;
    redisLog(REDIS_NOTICE, "The server is now processing %s", commandName);

调试如下:

redis-cli,我们可以就用工程给我们生成的那个,版本是配套的:

可以看到,断点已经生效了,且,客户端的请求已经到达。

到此这篇关于redis debug环境搭建过程详解(使用clion)的文章就介绍到这了,更多相关redis clion debug环境搭建内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录

    启动ssh服务 service sshd start yum -y update 查看centos版本 centos 5 执行: 复制代码 代码如下: rpm -Uvh http://mirror.webtatic.com/yum/el5/latest.rpm centos 6 执行: 复制代码 代码如下: rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm yum安装php 复制代码 代码如下: yum install php55w 

  • Windows环境下Redis Cluster环境搭建(图文)

    搭建 Redis集群,三个主节点,三个从节点,多主节点为了分布集群,从节点是为了高可用性. 1. 下载redis 地址:https://github.com/MicrosoftArchive/redis/releases 此次案例中使用的版本为3.0.503 Source code可以一起下载,下文会用到. 2. 安装redis 解压Redis-x64-3.0.503.zip,并复制,如下图 3. 修改每台redis.windows.conf,修改里面的端口号,以及集群的配置 port 6380

  • 详解docker搭建redis集群的环境搭建

    本文介绍了docker搭建redis集群的环境搭建,分享给大家,废话不多说,具体如下: 下载镜像 docker pull redis 准备配置文件 mkdir /home/docker/redis/ wget https://raw.githubusercontent.com/antirez/redis/3.0/redis.conf -O /home/docker/redis/redis.conf cd /home/docker/redis/ sed -i 's/# slaveof <maste

  • redis debug环境搭建过程详解(使用clion)

    目录 概要 环境搭建的大体思路 windows下安装linux工具链 什么是make和cmake 安装c语言开发的ide 具体安装步骤 cygwin安装 clion安装及插件安装 克隆redis 代码 如何调试 如何调试redis-server 概要 最近写了spring系列,这个系列还在进行中,然后有些同学开始叫我大神,然后以为我各方面都比较厉害,当然了,我是有自知之明的,大佬大神什么的,当作一个称呼就好,如果真的以为自己就是大神,那可能就走偏了. 其实我不少方面都比较薄弱,比如redis.m

  • React全家桶环境搭建过程详解

    本文介绍了React全家桶环境搭建过程详解,分享给大家,具体如下: 环境搭建 1.从零开始搭建webpack+react开发环境 2.引入Typescript 安装依赖 npm i -S @types/react @types/react-dom npm i -D typescript awesome-typescript-loader source-map-loader 新建tsconfig.json { "compilerOptions": { "outDir"

  • Anaconda+vscode+pytorch环境搭建过程详解

    1.安装Anaconda Anaconda指的是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项.在官网上下载https://www.anaconda.com/distribution/,因为服务器在国外会很慢,建议从清华镜像https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/下载. 2.安装VScode 需要在Anaconda再装VScode,因为Anaconda公司和微软公司的合作,不用在对进

  • Windows下Goland的环境搭建过程详解

    1.安装包下载 进入Go官方下载界面 下载并安装,安装时注意最好不要将其安装在C盘,我这里将它安装在D盘: 2.环境变量配置 安装包会自动添加环境变量,但是默认的Go工作空间C盘,而我们一般不在C盘放自己的文件,这里以我的工作空间为例我的Go项目文件放在D盘的GoFiles文件夹中,所以这里演示重新配置: 主要是配置两个环境变量:GOROOT和GOPATH: GOROOT指GO的安装目录 GOPATH是作为编译后二进制的存放目的地和import包时的搜索路径,不要设置为GO的安装目录,我们一般用

  • Python接口测试环境搭建过程详解

    环境搭建 python 安装:建议使用python3.7 pycharm安装 requests安装 :pip3 install requests requests 基本使用 usage: >>> import requests >>> r = requests.get('https://www.python.org') >>> r.status_code 200 >>> 'Python is a programming languag

  • 基于XML的MyBatis的环境搭建过程详解(IDEA)

    基于XML的MyBatis的环境搭建(IDEA) 主要步骤可概括为创建一个Maven导入依赖编写你一个你需要的实体类和一个持久层接口编写一个SqlMapConfig.xml编写映射配置文件编写测试类测试 学习了黑马的mybatis第一天总结 主要步骤可概括为 创建一个Maven 这里选择maven,然后直接点击next 填入自己的工程名,点击Finish,一个maven工程就创建好了. 导入依赖 在pom.xml中,导入需要的依赖. 编写你一个你需要的实体类和一个持久层接口 以User为了(为了

  • Android Studio开发环境搭建教程详解

    对于移动端这块,笔者之前一直都是进行iOS开发的,也从来没用过Java.但是因为进入了Google Android全国大学生移动互联网创新挑战赛(进入官网)的总决赛(笔者"西部计算机教育提升计划"的项目被直接推荐进入决赛),这个比赛要求一定要提交apk程序,所以我不得不赶紧学习一下Android开发了. 下面就对自己学习的过程做一个记录. 一.安装Android Studio 笔者用的计算机配置如下: Mac下安装Android Studio应该更简单一些,只需要下载一个Android

  • spring cloud alibaba Nacos 注册中心搭建过程详解

    这篇文章主要介绍了spring cloud alibaba Nacos 注册中心搭建过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 nacos下载地址 什么是 Nacos? nacos主要起到俩个作用一个是注册中心,另外一个是配置中心. 下面图 是nacos的功能结构图 运行环境 JDK 1.8+: Maven 3.2.x+: 下载 你可以通过源码和发行包两种方式来获取 Nacos. nacos发行包下载地址 选择版本解压 unzip

  • Python3+RIDE+RobotFramework自动化测试框架搭建过程详解

    Python2.7已于2020年1月1日开始停用,之前RF做自动化都是基于Python2的版本. 没办法,跟随时代的脚步,我们也不得不升级以应用新的控件与功能. 升级麻烦,直接全新安装. 一.Python安装 最新版Python下载地址:https://www.python.org/ 根据操作系统选择对应版本制品下载安装即可,本机用的是Windows x86-64 executable installer. 注意事项: 安装完成后检查下环境变量,默认会配置好,可以检查下. 检测是否安装成功,可在

  • vue3使用Vite打包组件库从0搭建过程详解

    目录 手动搭建一个用于测试组件库组件 Vue3 项目 初始化 ts 搭建一个基于 vite 的 vue3 项目 安装插件 配置 vite.config.ts 新建入口 html 文件 app.vue 入口 main.ts 配置脚本启动项目 手动搭建一个用于测试组件库组件 Vue3 项目 本篇文章将在项目中引入 typescript,以及手动搭建一个用于测试组件库组件 Vue3 项目 因为我们是使用 Vite+Ts 开发的是 Vue3 组件库,所以我们需要安装 typescript.vue3,同时

随机推荐