从函数传递时如何在gdb中查看数组内容

时间:2015-07-04 18:11:53

标签: c++ c arrays gcc gdb

我希望看到我的数组作为参数传递给函数时通过gdb传递。

说,我有一些看起来像

的代码
#include <stdio.h>

int fun(int b[], int len)
{ 
 int i = 0;

 /* how do I see the contents of array b[] in gdb */
 for(i = 0; i < len; ++i)
     printf("%d ", b[i]);
}

int main()
{
    int a[] = {1,2,3,4,5};

    fun(a, sizeof(a) / sizeof(*a));
    return 0;
}

在gdb中,[]如下所示

(gdb) disp a
1: a = {1, 2, 3, 4, 5}

但是如果我尝试打印b [],因为它是一个指针(因为数组作为指针传递),内容看起来像这样

fun (b=0x7fffffffdf90, len=5) at main.c:14
(gdb) disp b
2: b = (int *) 0x7fffffffdf90

我希望能够看到b []的内容,就像我看到[]所以它有助于我调试。

我该怎么做?

1 个答案:

答案 0 :(得分:5)

您可以使用artificial array显示如下:

*b@len