简介
GDB(GNU Debugger),通常用来调试C/C++程序。包含以下功能:
- 设置断点
- 显示、修改变量值
- 线程切换
使用GDB调试前,需要在GCC编译时加入-g选项,即GCC在程序中加入“切口”,GDB能够利用这些“切口”与程序进行交互。再使用“gdb 程序名"的方式执行程序。或者在GDB启动后使用file 程序名的方法启动。
常用选项
操作 | 全称 | 示例 | 含义 |
set args | set args value1 value2 ... | 设置参数 | |
l | list | list 开始行号; list [开始,结束] | 列出指定行号开始的代码 |
r | run | 运行装载进GDB的可执行文件 | |
n | next | 显示下一行 | |
c | continue | 继续运行被中断的程序 | |
i | info | info para | 列出信息 |
bt | 列出调用栈 | ||
file | 加载文件 | ||
q | 退出GDB |
断点相关操作
操作 | 全称 | 示例 | 含义 |
b | break | break 行号;break 函数名称; | 设置断点,程序运行到断点位置处会中断 |
info | info break | 列出所有断点 | |
delete | 删除指定编号的断点,未指定则删除所有断点 | ||
disable | disable breakpoint 断点编号 | 禁止使用该编号断点 | |
enable | enable breakpoint 断点编号 | 允许使用该编号断点 | |
clear | clear 代码行号 | 清除断点 |
变量相关操作
操作 | 全称 | 实例 | 含义 |
p | printf | printf var | 打印变量内容 |
set | set args | 设置发送给程序的参数 | |
show | show args | 查看默认参数 | |
display | display para | 程序中断运行时,显示(作用域内)变量 | |
whatis | whatis 变量名 | 查看变量类型 | |
ptype | ptype 变量名 | 查看变量类型及详细信息 |
单步调试
操作 | 全称 | 实例 | 含义 |
next | n | 单步执行 | |
step | s | 进入函数 | |
finish | 退出已经进入的函数,返回到调用的函数中 |
Tips:
按Enter键,GDB会默认执行上一条命令。