gdb 打印值
时间: 2025-07-11 12:04:15 浏览: 16
在使用 GDB 调试器时,打印变量值和内存内容是常见的调试需求。以下是一些常用的方法和命令:
### 打印变量值
1. **基本打印**
使用 `print` 命令可以输出当前上下文中的变量、常量或表达式的值。例如:
```bash
(gdb) print i
```
这会输出变量 `i` 的当前值,并根据其类型自动选择显示格式。
2. **指定显示格式**
如果希望以特定格式查看变量的值,可以在 `print` 后加上 `/` 和格式标识符。例如,查看整数的十六进制表示:
```bash
(gdb) print/x i
```
其他支持的格式包括:
- `d`:十进制
- `x`:十六进制
- `o`:八进制
- `t`:二进制
- `a`:地址格式
- `c`:字符
- `f`:浮点数[^2]
3. **自定义输出格式**
GDB 允许用户通过设置默认输出格式来简化操作。例如,将所有整数输出为十六进制:
```bash
(gdb) set output-radix 16
```
### 打印内存内容
1. **使用 `x` 命令查看内存**
`x`(examine)命令用于查看从指定地址开始的内存内容。基本语法如下:
```bash
x/[格式][大小] 地址
```
其中:
- **格式**:决定如何解释内存内容,如 `d`(十进制)、`x`(十六进制)、`o`(八进制)、`c`(字符)、`s`(字符串)等。
- **大小**:指定查看的单元数量,例如 `10` 表示查看 10 个单元。
- **地址**:要查看的起始地址。
示例:查看从地址 `0x7fffffffe5b0` 开始的 4 个十六进制字节:
```bash
(gdb) x/4xw 0x7fffffffe5b0
```
2. **常见用法示例**
- 查看某个变量的内存布局:
```bash
(gdb) x/4xb &i
```
这条命令将显示变量 `i` 所占内存的前 4 个字节,以十六进制形式展示。
- 查看字符串内容:
```bash
(gdb) x/s str
```
其中 `str` 是一个指向字符串的指针,该命令将输出字符串的实际内容。
### 动态修改内存变量值
除了读取数据外,GDB 还允许直接修改内存中的变量值。例如:
```bash
(gdb) set variable i = 10
```
这会将变量 `i` 的值设置为 `10`,适用于快速测试不同输入对程序逻辑的影响[^4]。
### 注意事项
- GDB 不支持宏定义的展开,因此不能直接使用代码中的宏进行调试。
- 在处理复杂数据结构时,可能需要结合多个命令或编写自定义脚本来解析内存内容。
---
阅读全文
相关推荐



















