1

我正在尝试查找数组元素的内存位置。该功能基本上是这样的(在C中):

int function(struct MyStruct *s)
{
    char myArray[16];

    printf("\n");
    printf("\n");
    gets(myArray);
    return strcasecmp(s->a,guess);
}

根据在线 GDB 指南,我应该能够执行“x myArray”或“x myArray[0]”或“p myArray”或“p myArray[0]”来查看元素或内存位置。我在函数和获取处设置断点(并一直持续到获取断点),但是当我尝试 GDB 命令时,我得到“没有这样的文件”。我还尝试使用“b 15”在数组和“b 16”处设置断点。但我仍然遇到同样的错误。为什么会发生这种情况,我该如何解决?

4

1 回答 1

3

"break main, break function, break gets, break 15 (这没用), break 16 (没用), run, s (直到我到达gets断点), x myArray, x myArray[0] , p myArray, p myArray[0]"

做错了

当你到达gets断点时,你会在里面 gets停下来。

在那里,myArray变量是不可见的——它在 inside function,而不是 inside gets

你也不能break 15在里面gets,因为你没有调试信息libc(这是gets实现的地方)。

你想要做的是finish从断点开始gets(这会让你回到function)。现在您应该可以查看myArray, 或break 15等。

于 2012-04-28T17:44:12.947 回答