gdb 调试 redis
程序员文章站
2022-05-19 14:46:31
...
可以通过 gdb 调试 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 *aaa@qq.com 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
make
调试流程
步骤 | 命令 | 描述 |
---|---|---|
1 | sudo gdb --args ./src/redis-server redis.conf | 启动调试 |
2 | r | 运行程序 |
3 | ctrl + c(键盘操作) | 中断程序 |
4 | b dict.c:dictAdd | 对应代码下断点 |
5 | c | 继续运行程序 |
6 | redis-cli set k5 v5 |
启动 client 连接redis-server测试(redis 默认端口 6379) |
7 | focus | 进入源码窗口调试 |
8 | bt | 程序堆栈(查看接口调用流程) |
9 | f 0 | 进入堆栈第 0 层 |
10 | n | 单步调试 |