准备工作
为了能让程序更直观的被调试,在编译时应该添加一些选项
-g
: 添加调试选项-ggdb3
: 调试宏定义
启动方式
不带参数
gdb ./a.out
带参数
gdb ./a.out
set args -a -b -c any_argument_you_need
b main
run
调试core文件
gdb bin_name core_name
调试正在运行的程序
大致按如下步骤
ps axu | grep bin_name
, 获取进程idgdb attach pid
,启动gdbb somewhere
,设置断点c
,继续运行程序
基本命令
括号里是命令缩写,详细命令介绍见http://www.yolinux.com/TUTORIALS/GDB-Commands.html,这里只列出常用的
命令 | 描述 |
---|---|
查看信息 | |
info break(b) | 查看断点 |
info threads | 查看线程 |
info watchpoints | 查看观察点 |
thread thread-number | 进入某个线程 |
删除信息 | |
delete(d) | 删除所有断点,观察点 |
delete(d) breakpoint-number delete(d) watchpoint |
删除指定断点,观察点 |
调试 | |
step(s) | 进入函数 |
next(n) | 执行一行 |
until line-number | 执行到指定行 |
continue(c) | 执行到下一个断点/观察点 |
finish | 执行到函数完成 |
堆栈 |