gdb调试器的各种命令
时间: 2025-04-02 18:25:06 浏览: 33
### GDB调试器常用命令及其功能
#### 启动与基本操作
- **`start`**: 将程序运行到 `main()` 函数的入口处并暂停,此时还未执行 `main()` 中的第一条指令[^2]。
- **`run (r)`**: 执行程序直至遇到断点或完成整个流程。如果设置了断点,则会在第一个断点处停止。可以通过附加参数来传递给被调试程序,支持标准输入输出重定向以及 shell 通配符。
#### 断点管理
- **`breakpoint (b)`**: 设置断点。可以基于行号、函数名或者条件表达式设置断点。例如:
```bash
break main # 在 main 函数入口设置断点
break foo.c:10 # 在文件 foo.c 的第 10 行设置断点
break if i > 10 # 条件断点,在满足条件时才停住
```
- **`delete <n>`**: 删除编号为 `<n>` 的断点。
- **`disable <n>` / `enable <n>`**: 禁用或启用某个断点而不删除它。
- **`info breakpoints`**: 查看当前所有的断点状态和信息。
#### 运行控制
- **`continue (c)`**: 继续执行程序直到下一个断点。
- **`step (s)`**: 单步进入下一条语句。如果是函数调用,则会跳转到该函数内部继续跟踪其执行过程。
- **`next (n)`**: 类似于 step,但是不会深入到函数体内,而是直接越过函数调用[^3]。
- **`finish`**: 当前帧中的剩余部分被执行完毕后返回至上一层级框架。
#### 数据查看
- **`print (p)`**: 输出变量值。可配合不同格式化选项使用,比如打印字符串、数组等复杂数据结构的内容。
```bash
print x # 打印变量x的值
print/x $eax # 使用十六进制形式打印寄存器 eax 的值
```
- **`display`**: 自动显示某些特定变量的变化情况每次停下来都会重新计算一次这些表达式的最新数值。
- **`undisplay`**: 取消之前定义好的自动显示项。
#### 内存分析
- **`x/<nfu> addr`**: 检查内存区域的数据分布状况。其中 `/` 后面接三个字段分别代表数量(`n`)、格式(`f`) 和单位大小(`u`);而最后则是目标地址位置[`addr`]。常见组合如下所示:
- 数量:如 `4`,意味着连续展示四个单元格;
- 格式:如 `x`(十六进制),`d`(带符号十进制),`u`(不带符号十进制)等等;
- 单位尺寸:如 `b`(字节),`h`(半字,两个字节),`w`(单词,四个字节).
```python
x/8wx 0x7fffffffe6e0 # 展示从地址0x7fffffffe6e0开始的八个四字节数组成的序列,并采用十六进制表示法呈现出来。
```
#### 其他辅助工具
- **`backtrace (bt)`**: 列出完整的堆栈回溯路径,帮助理解错误发生的具体上下文环境。
- **`frame <n>`**: 转移到指定序号的调用现场以便进一步调查局部变量等相关细节。
- **`set variable`**: 修改正在运行进程里的任意全局或者是静态作用域内的对象实例的新初始赋值。
```bash
set var_name=5 # 把var_name设为5
```
阅读全文
相关推荐



















