如何用gdb打印指针变量指向的数组值
时间: 2023-07-20 18:43:50 浏览: 340
c代码-数组指针排序错误记录
使用gdb调试程序时,可以使用以下命令打印指针变量指向的数组值:
1. 首先,在程序中设置断点,例如 `break main` 在程序执行到 `main` 函数时会自动停下来。
2. 在gdb中运行程序,例如 `run arg1 arg2` 运行程序并传入参数 `arg1` 和 `arg2`。
3. 当程序停在断点处时,在gdb命令行中输入 `print pointer` 命令,其中 `pointer` 是指向数组的指针变量。
4. 如果指针变量指向的是动态分配的数组,可以使用 `print *pointer@size` 命令打印数组中的元素值,其中 `size` 是数组的长度。
例如,如果有以下代码:
```
int* arr = new int[5] {1, 2, 3, 4, 5};
int* ptr = arr;
```
可以在gdb中使用以下命令打印指针变量 `ptr` 指向的数组值:
```
(gdb) break main
(gdb) run
(gdb) print ptr
$1 = (int *) 0x7ffff7fa6010
(gdb) print *ptr@5
$2 = {1, 2, 3, 4, 5}
```
注意,如果指针变量未初始化或指向未分配的内存,使用上述命令可能会导致程序崩溃或打印错误的数组元素值。
阅读全文