GDB不显示全局变量的值

时间:2013-03-11 17:59:32

标签: c debugging gdb

我有三个文件,TDS.c,TDS.h,ExtraRoutines.c,它们一起编译为共享库。 TDS.h是头文件并定义变量。 ExtraRoutines.c负责内存分配,TDS.c执行主要工作。 变量x0在TDS.h中定义为double* x0,内存在ExtraRoutines.c中分配为

x0 = malloc(10 * sizeof(*x0));

在TDS.c的第一行,我调用ExtraRoutines.c来分配内存。内存分配正常执行,函数返回。当我使用gdb调试程序时弹出问题。当我使用print x0[0]访问数据时,它会显示:

Cannot access memory at address 0x0

表示x0NULL。但我很确定x0不是NULL,因为当我使用以下命令将x0的数据保存到文件中时,会保存正确的值,这意味着x0 1}}存在并引用有效的内存地址。

FILE* fh = fopen("dump", "w");
for(k = 0; k < 10; k++)
{
    x0[k] = orgX0[k];
    fprintf(fh, "%f\n", x0[k]);
}
fclose(fh);

该程序有一个错误,我需要通过分析数据找到错误。由于目前gdb没有显示任何全局变量,因此很难找到错误。因此,有必要帮助找到问题并在gdb中显示全局变量(包括x0)的值。 感谢

0 个答案:

没有答案