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

标签 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 中,a[] 如下所示

(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[] 的内容,就像看到 a[] 一样,这样它可以帮助我调试。

我该怎么做?

最佳答案

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

*b@len

关于c++ - 当从函数传递时如何在 gdb 中查看数组内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31223769/

相关文章:

c - 如何在 C 中的单个指令周期内添加 100 个整数元素的数组?

javascript - 使用 JavaScript 将每个数组元素的首字母大写

Java 文件转二维数组

c - 这个递归程序有什么问题

c++ - 如何将const char *作为LPCSTR参数的参数传递?

c++ - 让析构函数根据是否发生异常采取不同的操作

c++ - 在 C++ 中连接位

N 维数组赋值的 C 宏重载

javascript - 如何使用对象的键返回过滤后的对象数组

c++ - 临时对象的生命周期