GDB在阵列初始化时报告“当前上下文中没有符号”

时间:2013-10-01 12:53:01

标签: c arrays gdb size

我正在尝试初始化一个大小为ceil(buflen / 125.0)的数组,如下所示:

long long maxjpg = ceil(buflen/125.0);
long long arr[maxjpg];

我没有收到编译器错误,但GDB报告“当前上下文中没有符号'arr'”。我发现的唯一修复方法是将数值硬编码到数组大小中,如下所示:

long long arr[5];

我尝试使用const以及这些方法的任意组合使用不同的变量类型进行投射。我知道ceil返回double,我也尝试过这个。

初始化值并按照这样的方式打印:

arr[0] = 25;
printf(pos 0 is %d\n", arr[0]);

输出:pos 0 is 25

在修改后通过GDB打印arr[0]会导致“值已经过优化”。

重现的最低可行代码:

#include <math.h>

int main(void){

long long size = ceil(123.45);    
long long arr[size];

return 0;
}

GDB Fedora 7.4.50.20120120-52.fc17

1 个答案:

答案 0 :(得分:3)

VGA目前无法在gdb中运行。有一个关于它的错误和正在进行的修复它的项目:https://sourceware.org/gdb/wiki/VariableLengthArray

在archer.git中有一个实现在某些情况下有效,但是它不适合进入主干。