redis源码编译debug调试

redis源码编译debug调试,让你进入redis的源码世界。

##下载源码

[yym@192 ~]$ cd /home/yym/code/

[yym@192 ~]$ mkdir redis_debug

[yym@192 ~]$ cd redis_debug

[yym@192 ~]$ wget https://download.redis.io/releases/redis-6.2.0.tar.gz

[yym@192 ~]$ tar -zxvf redis-6.2.0.tar.gz

##编译

[yym@192 ~]$ make CFLAGS="-g -O0" PREFIX=/home/yym/code/redis_debug/

##安装

[yym@192 ~]$ make CFLAGS="-g -O0" PREFIX=/home/yym/code/redis_debug/ install

##gdb调试redis服务端

[yym@192 ~]$ gdb /home/yym/code/redis_debug/bin/redis-server /home/yym/code/redis-6.2.0/redis.conf

##gdb调试redis客户端

gdb /home/yym/code/redis_debug/bin/redis-server /home/yym/code/redis-6.2.0/redis.conf

(gdb) b main

(gdb) b aeApiPoll

##查看redis进程

[yym@192 ~]$ ps -ef | grep redis
yym      13924  6371  0 02:42 pts/0    00:00:06 /home/yym/code/redis_debug/bin/redis-server 127.0.0.1:6379
yym      14222 14041  0 03:32 pts/2    00:00:00 /home/yym/code/redis_debug/bin/redis-cli -h 127.0.0.1 -p 6379

##redis-cli客户端发送命令

[yym@192 bin]$ /home/yym/code/redis_debug/bin/redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> set yym 1
OK

##gdb调试redis-cli客户端进程

[yym@192 ~]$ gdb attach 14222

(gdb) b redis-cli.c:2073  ##argv = cliSplitArgs(line,&argc);

(gdb) b redis-cli.c:2147 ##issueCommandRepeat(argc-skipargs, argv+skipargs, repeat)

(gdb) n

(gdb) p *(&argv[0])
$10 = (hisds) 0x2750c43 "set"
(gdb) p *(&argv[1])
$11 = (hisds) 0x2750ad3 "yym"

(gdb) p *(&argv[2])
$13 = (hisds) 0x2750823 "1"

你可能感兴趣的:(redis,数据库,缓存)