redis 源码调试环境搭建(ubuntu+clion+redis5.0.5)

原创不易,转载请注明出处

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

本文就是记录一下redis源码调试环境的搭建过程,防止以后用到再搭建还得现找资料,最开始看redis源码的时候直接看的静态代码,但是随着深入有些就需要debug验证的地方,这个时候就需要搭建一套可debug的源码阅读环境

1.环境准备

操作系统我这边用的是Ubuntu 18桌面版,ide是用的clion,redis版本是5.0.5
这里为啥要用ubuntu,我们redis生产都是跑在linux系统上的,使用linux系的操作系统能够贴近生产,还有一个就是出现问题的概率小。
ide 为啥用clion ,搞Java出身的,idea用的还算是熟练,clion跟idea差不多,上手速度快。
redis 5.0.5 网上的资料多点。
ubuntu 操作系统安装这里不介绍了,如果是使用window操作系统,可以使用wmware 整个ubuntu虚拟机,我这边是使用的服务器。

1.1 ubuntu安装软件

1、安装gcc

$ sudo apt install gcc

2、安装g++

$ sudo apt install g++

3、安装cmake

$ sudo apt install cmake

参考文档:https://vegetable-chicken.blog.csdn.net/article/details/103056279

1.2 clion安装

这个直接进ubuntu的应用商店下载搜索下载即可
在这里插入图片描述
在这里插入图片描述

1.3 redis源码下载

git客户端安装,官方地址: https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git
ubuntu 安装git命令:

$ sudo apt install git-all

直接github 搜 redis,然后fork到自己的仓库中,最后clion下来即可
从5.0.5 tag 创建一个新的分支

git checkout -b 5.0.5 5.0.5

redis 项目目录
在这里插入图片描述

2.项目中添加CMakeLists

  1. deps 目录下创建 CMakeLists.txt文件
    文件内容:
add_subdirectory(hiredis)
add_subdirectory(linenoise)
add_subdirectory(lua)
  1. deps/hiredis目录下创建CMakeLists.txt文件
    文件内容:
add_library(hiredis STATIC
        hiredis.c
        net.c
        dict.c
        net.c
        sds.c
        async.c
        read.c)
  1. deps/linenoise目录下创建CMakeLists.txt文件
    文件内容:
add_library(linenoise
        linenoise.c)
  1. deps/lua目录下创建CMakeLists.txt文件
    文件内容:
set(LUA_SRC
        src/fpconv.c
        src/lapi.c
        src/lauxlib.c
        src/lbaselib.c
        src/lcode.c
        src/ldblib.c
        src/ldebug.c
        src/ldo.c
        src/ldump.c
        src/lfunc.c
        src/lgc.c
        src/linit.c
        src/liolib.c
        src/llex.c
        src/lmathlib.c
        src/lmem.c
        src/loadlib.c
        src/lobject.c
        src/lopcodes.c
        src/loslib.c
        src/lparser.c
        src/lstate.c
        src/lstring.c
        src/lstrlib.c
        src/ltable.c
        src/ltablib.c
        src/ltm.c
        src/lua.c
        src/lua_bit.c
        src/lua_cjson.c
        src/lua_cmsgpack.c
        src/lua_struct.c
        src/luac.c
        src/lundump.c
        src/lvm.c
        src/lzio.c
        src/print.c
        src/strbuf.c)


add_library(lua STATIC ${LUA_SRC})
  1. /src/modules目录下创建CMakeLists.txt文件
    文件内容:
cmake_minimum_required(VERSION 3.9)
set(CMAKE_BUILD_TYPE "Debug")
add_library(helloworld SHARED helloworld.c)
set_target_properties(helloworld PROPERTIES PREFIX "" SUFFIX ".so")


add_library(hellotype SHARED hellotype.c)
set_target_properties(hellotype PROPERTIES PREFIX "" SUFFIX ".so")


add_library(helloblock SHARED helloblock.c)
set_target_properties(helloblock PROPERTIES PREFIX "" SUFFIX ".so")


add_library(testmodule SHARED testmodule.c)
set_target_properties(testmodule PROPERTIES PREFIX "" SUFFIX ".so")
  1. 项目目录下创建CMakeLists.txt 文件
cmake_minimum_required(VERSION 3.6) #cmake版本需求
project(redis_5_0_5)      #工程

set(CMAKE_BUILD_TYPE "Debug")


get_filename_component(REDIS_ROOT "${CMAKE_CURRENT_SOURCE_DIR}" ABSOLUTE)
add_subdirectory(deps)
add_subdirectory(src/modules)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -pedantic -DREDIS_STATIC=''")

set(SRC_SERVER
        src/t_stream.c
        src/lolwut.c
        src/localtime.c
        src/listpack.c
        src/lolwut5.c
        src/adlist.c
        src/quicklist.c
        src/ae.c
        src/anet.c
        src/dict.c
        src/server.c
        src/sds.c
        src/zmalloc.c
        src/lzf_c.c
        src/lzf_d.c
        src/pqsort.c
        src/zipmap.c
        src/sha1.c
        src/ziplist.c
        src/release.c
        src/networking.c
        src/util.c
        src/object.c
        src/db.c
        src/replication.c
        src/rdb.c
        src/t_string.c
        src/t_list.c
        src/t_set.c
        src/t_zset.c
        src/t_hash.c
        src/config.c
        src/aof.c
        src/pubsub.c
        src/multi.c
        src/debug.c
        src/sort.c
        src/intset.c
        src/syncio.c
        src/cluster.c
        src/crc16.c
        src/endianconv.c
        src/slowlog.c
        src/scripting.c
        src/bio.c
        src/rio.c
        src/rand.c
        src/memtest.c
        src/crc64.c
        src/bitops.c
        src/sentinel.c
        src/notify.c
        src/setproctitle.c
        src/blocked.c
        src/hyperloglog.c
        src/latency.c
        src/sparkline.c
        src/redis-check-rdb.c
        src/redis-check-aof.c
        src/geo.c
        src/lazyfree.c
        src/module.c
        src/evict.c
        src/expire.c
        src/geohash.c
        src/geohash_helper.c
        src/childinfo.c
        src/defrag.c
        src/siphash.c
        src/rax.c)

set(SRC_CLIENT src/siphash.c
        src/dict.c
        src/crc16.c
        src/anet.c
        src/adlist.c
        src/redis-cli.c
        src/zmalloc.c
        src/release.c
        src/ae.c
        src/crc64.c)



set(EXECUTABLE_OUTPUT_PATH  src)
link_directories(deps/linenoise deps/lua/src deps/hiredis)

add_executable(redis-server  ${SRC_SERVER})
add_executable(redis-cli  ${SRC_CLIENT})

target_include_directories(redis-server
        PRIVATE ${REDIS_ROOT}/deps/linenoise
        PRIVATE ${REDIS_ROOT}/deps/hiredis
        PRIVATE ${REDIS_ROOT}/deps/lua/src
        #PRIVATE ${REDIS_ROOT}/deps/jemalloc
        )

target_include_directories(redis-cli
        PRIVATE ${REDIS_ROOT}/deps/linenoise
        PRIVATE ${REDIS_ROOT}/deps/hiredis
        PRIVATE ${REDIS_ROOT}/deps/lua/src
        #PRIVATE ${REDIS_ROOT}/deps/jemalloc
        )


target_link_libraries(redis-server
        PRIVATE pthread
        PRIVATE m
        PRIVATE dl
        PRIVATE lua
        PRIVATE linenoise
        PRIVATE hiredis)


target_link_libraries(redis-cli
        PRIVATE pthread
        PRIVATE m
        PRIVATE dl
        PRIVATE linenoise
        PRIVATE hiredis)

参考文档1:https://blog.csdn.net/tpc4289/article/details/113589069 本文主要是按照这个文档配置
参考文档2:http://www.zyiz.net/tech/detail-141342.html 按照这个文档也能搞起来

3.启动测试

整完 CMakeLIsts.txt之后
就可以启动redis-server 与redis-cli了
在这里插入图片描述
启动redis-server:
在这里插入图片描述
启动redis-cli:
在这里插入图片描述
这里你是没法输入命令的,可以到编译目录 cmake-build-debug 目录下面 src 下面找到redis-cli可执行文件
执行: ./redis-cli
就进入命令行交互:
在这里插入图片描述
到这我们这redis源码调试环境就搭建好了。

参考文档1:https://blog.csdn.net/tpc4289/article/details/113589069 本文主要是按照这个文档配置
参考文档2:http://www.zyiz.net/tech/detail-141342.html 按照这个文档也能搞起来
参考文档3:https://vegetable-chicken.blog.csdn.net/article/details/103056279

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

$码出未来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值