debug-redis

背景

redis常用于作为缓存,用来缓存热点数据。一些数据例如视频网站的视频、评论等信息,这些信息有着比较明显的时间上的冷热区分,即最近发布的最有可能访问到,最热门的一些数据往往只占很小一部分,所以可以利用缓存减少响应时间和数据库的压力。

学习使用redis,除了常用的基本命令、数据结构外,还需要了解其实现机制能够帮助更好的使用它,另外一些最佳实践和容易踩坑的地方也需要多注意。

下载、编译、运行、debug

基本上入门学习、了解一个新的框架、工具开始就是这些步骤,搭配上一些官方wiki、博客、文章、书籍更好了。但是从未入门到入门经常有一个小门槛,比较编译,可能因为平台、环境等因素遇到各种各样的问题,让我们感到气馁甚至放弃,所以本文期望能够给一些朋友减少入门的阻力。

Clion

熟悉IDEA的同学推荐使用CLion查看、debugC、C++代码,使用gdb、lldb等也可以。

1
git clone https://github.com/antirez/redis

Import redis project using CLion

打开后,略微修改CMakeList.txt文件, 修改为CMakeList.txt

然后在redis文件夹下执行make进行编译

1
make

1
2
cd src
sh mkreleasehdr.sh

然后Clion上会出现一个server的debug按钮,但是在我的环境下执行会出现错误,

1
2
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

改为在命令行执行如下命令后就好了。注意路径要修改为自己的路径。

1
cmake --build ./cmake-build-debug --target redis -- -j 4 -stdlib=libstdc++

然后使用server debug就可以了。

VisualStudioCode

最近发现VisualStudioCode也很好用,对C++的支持比Clion要好一些
下载好VisualStudioCode后,安装C++的插件。然后在debug里添加新的configuration。会出现一个配置文件
关键的program,这里填要debug的target,在redis里就是编译后的src/redis-server,然后点击debug就可以了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
"version": "0.2.0",
"configurations": [
{
"name": "(lldb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceRoot}/src/redis-server",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceRoot}",
"environment": [],
"externalConsole": true,
"MIMode": "lldb"
}
]
}

debug-vc

liuzhengyang wechat
欢迎扫一扫上面的专注源码分析学习的微信公众号,订阅我的博客,及时获取更新内容!
您的鼓励给我更多写作动力。