# 写在前面
本文主要介绍`gdb`调试的一些选项,这些东西网上都能搜到,至于我为什么要写,主要我只会这些 ~~(视频里只讲了这些)~~ ,多了我也没看。
# gdb调试
大前提:程序是你自己写的。用于调试一些逻辑错误
## 基础指令
- `-g`:使用该参数编译可以执行文件,得到调试表。
- `gdb ./a.out`
- `list`:`list 1` 列出源码。根据源码指定 行号设置断点。
` `b`:`b 20` 在20行位置设置断点。
- `run/r`:运行程序
- `n/next`: 下一条指令(会越过函数)
- `s/step`: 下一条指令(会进入函数)
- `p/print`:`p i` 查看变量的值。
- `continue`:继续执行断点后续指令。
- `finish`:结束当前函数调用。
- `quit`:退出gdb当前调试。
## 其他指令
- `run`:使用run查找段错误出现位置。
- `set args`:设置main函数命令行参数 (在 start、run 之前)
run 字串1 字串2 ...: 设置main函数命令行参数
- `info b`: 查看断点信息表
`b 20 if i = 5`:设置条件断点。
- `ptype`:查看变量类型。
- `bt`:列出当前程序正存活着的栈帧。
- `frame`:根据栈帧编号,切换栈帧。
- `display`:设置跟踪变量
- `undisplay`:取消设置跟踪变量。 使用跟踪变量的编号。
Linux系统编程(三)