【问题标题】:Why gdb failed to print array elements?为什么 gdb 无法打印数组元素?
【发布时间】:2016-09-02 06:51:01
【问题描述】:

我希望使用 gdb 打印分配内存的所有数组元素。

int main() {
   int* p=(int*)malloc(7*sizeof(int)); 
   for(size_t j=0;j<7;++j) {
         p[j]=j; 
   } 
   return 0; 
} 

所以我用-g3编译了这个程序,用gdb启动它,并设置了break

> print p@7 

我预计 with 会打印出 1-7,但实际输出的是

$1 = {0x6160b0, 0x5, 0xff00000000, 0x615c60, 0x615c80, 0x615c20, 0x615c40} 

为什么我的期望!=实际结果,我的程序有什么问题吗?

【问题讨论】:

    标签: c++ arrays gcc printing gdb


    【解决方案1】:

    GDB Manual 说:

    “@”的左操作数应该是所需数组的第一个元素,并且是一个单独的对象。右操作数应该是所需的数组长度。结果是一个数组值,其元素都是左参数的类型

    如果你说

     print p@7 
    

    你告诉 GDB 打印一个包含 7 个指针的数组。

    你需要的是:

    print *p@7 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-14
      • 1970-01-01
      相关资源
      最近更新 更多