返回顶部

gdb速查手册

写在前面:

有段时间没用gdb了,总是忘性很大,此次边查看边记录一下,方便后续使用。

1、启动GDB

#启动程序(假设程序名为 your_program)
gdb ./your_program

#或者attach到正在运行的进程
gdb -p <进程PID>

2、设置断点

b   设置断点
c   继续执行
客户端请求时,服务端在断点处停下

# 查看所有断点
info breakpoints
# 或简写
info b
i b

# 禁用某个断点
disable 1

# 启用某个断点
enable 1

# 删除某个断点
delete 1
# 或
d 1

3、逐行排查

n      # next: 执行下一行(不进入函数内部)
s      # step: 执行下一行(会进入函数内部)
c      # continue: 继续执行到下一个断点
p      # print: 打印变量
bt     # backtrace: 查看调用栈
l      # list: 显示当前代码
# up 1 让你可以查看调用当前函数的上层函数的上下文和变量,但不会改变程序执行状态,只是改变你查看的视角。
# 向上移动1层调用栈
up 1

# 向下移动1层调用栈
down 1

# 查看当前调用栈
bt        # backtrace,显示完整调用栈
frame     # 显示当前栈帧信息

4、常用快捷操作

# 查看当前代码位置
(gdb) l                    # list: 显示当前行附近的代码
(gdb) l 150                # 显示第150行附近的代码

# 查看调用栈
(gdb) bt                   # 查看完整调用栈
(gdb) frame 1              # 切换到上一层调用栈
(gdb) info locals          # 查看当前函数的所有局部变量
(gdb) info args            # 查看函数参数

# 直接执行到某一行
(gdb) until 160            # 执行到第160行

# 跳过循环
(gdb) until                # 执行完当前循环

# 退出函数
(gdb) finish               # 执行完当前函数并返回

5、退出

quit                 # 退出GDB
q                    # 简写
# 如果程序还在运行,会提示确认
# 强制退出(不提示)
quit -y

#结束当前程序执行
kill                 # 杀死正在调试的程序
k                    # 简写
# GDB本身不退出,可以重新run

continue             # 继续执行直到结束或下一个断点
c                    # 简写

finish               # 执行完当前函数并返回
fin                  # 简写

until                # 执行到当前循环结束
u                    # 简写

until <line>         # 执行到指定行
u 100                # 执行到第100行

6、快捷指令

Ctrl+D               # 等同于quit(需要按两次)
Ctrl+C               # 中断程序执行(进入GDB提示符)
posted @ 2025-12-31 15:36  十方央丶  阅读(0)  评论(0)    收藏  举报