redis & gdb & vscode & debug 调试

可以通过 gdb / vscode 调试 redis 源码,理解 redis 工作流程。


视频


gdb 常用命令

详细文档通过命令查看:

man gdb
命令操作
r运行调试
n下一步
c继续运行
ctrl + c中断信号
c/continue中断后继续运行
s进入一个函数
finish退出函数
l列出代码行
b断点
显示断点列表 info b
删除断点 delete number
清除断点 clear
n下一步
until跳至行号
until
p打印
打印数组信息 p *array@len
p/x 按十六进制格式显示变量
bt/backtrace堆栈bt <-n>
-n表一个负整数,表示只打印栈底下n层的栈信息。
f/frame进入指定堆栈层
f
thread apply all bt显示线程所有堆栈
attach绑定进程调试
attach <-p pid>
detach取消绑定调试进程
disassemble看二进制数据
disassemble
x查看内存
focus显示源码界面
display显示变量
info registers查看寄存器

安装编译 redis

wget http://download.redis.io/releases/redis-3.2.8.tar.gz
tar xzf redis-3.2.8.tar.gz
cd redis-3.2.8

更新 Makefile,修改相应编译项

vim src/Makefile
# OPTIMIZATION?=-O2
OPTIMIZATION?=-O0
# REDIS_LD=$(QUIET_LINK)$(CC) $(FINAL_LDFLAGS)
REDIS_LD=$(QUIET_LINK)$(CC) $(FINAL_LDFLAGS) $(OPTIMIZATION)
make clean; make

gdb 调试流程

步骤命令描述
1sudo gdb --args ./src/redis-server redis.conf启动调试
2r运行程序
3ctrl + c(键盘操作)中断程序
4b dict.c:dictAdd对应代码下断点
5c继续运行程序
6redis-cli
set k5 v5
启动 client 连接redis-server测试(redis 默认端口 6379)
7focus进入源码窗口调试
8bt程序堆栈(查看接口调用流程)
9f 0进入堆栈第 0 层
10n单步调试

命令窗口调试
源码窗口调试

vscode 调试流程

启动 vscode

因为 gdb 在 macOS 下需要 sudo 提升权限,vscode 配置貌似没有这个选项设置。所以只能用下面这个命令启动 vscode 项目

# redis 源码本地目录
cd ~/src/other/redis-3.2.8

#  vscode 打开 redis 源码目录
sudo code --user-data-dir="~/.vscode-root" .

vscode 项目配置

  • launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "gcc build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/src/redis-server",
            "args": [
                "redis.conf"
            ],
            "stopAtEntry": true,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "preLaunchTask": "shell"
        }
    ]
}
  • tasks.json
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "shell",
            "type": "shell",
            "command": "/usr/bin/make"
        }
    ]
}

vscode 调试

调试


参考

gdb 调试工具 — 使用方法浅析

Linux中gdb 查看core堆栈信息

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值