在GDB调试器中打印数组的所有值,可以通过以下方法实现
在GDB调试器中打印数组的所有值,可以通过以下方法实现:
一、静态数组打印
直接打印数组名对于静态数组(如int arr[5]),直接使用 p arr 命令即可打印全部元素。但需注意默认最多显示200个元素,超出部分会被截断。
1 | |
强制显示全部元素若数组长度超过默认限制,需通过 set print elements 0 解除限制:
1 | |
二、动态数组(指针形式)打印
使用指针+长度语法对于动态分配的数组(如int *ptr),使用 p *ptr@len 格式,其中 len 为元素个数。
1 | |
结合变量长度若数组长度存储在变量中(如int a=10),可直接引用变量:
1 | |
三、高级显示设置
显示数组下标通过 set print array-indexes on 开启下标显示,便于定位元素位置:
1 | |
指定起始索引使用 p buffer[3]@5 格式打印从索引3开始的连续5个元素:
1 | |
四、其他场景
- C++ Vector容器:直接使用 p vec 命令(需调试符号支持):
1 | |
- 内存地址转数组:对任意内存地址(如0x7fff0008c0),使用强制类型转换:
1 | |
注意事项
若输出被截断,优先检查 print elements 的设置。
动态数组需确保指针有效且长度不越界。
对复杂数据结构(如嵌套数组),可结合 ptype 命令查看类型定义。
相关阅读
在GDB调试器中打印数组的所有值,可以通过以下方法实现
https://blog.calcguide.tech/2025-05-05-在gdb调试器中打印数组/