【问题标题】:gdb how to inspect 2D array elementsgdb如何检查二维数组元素
【发布时间】:2012-07-04 20:42:10
【问题描述】:

我很高兴在 GDB 中进行调试,然后我遇到了一个可能包含错误值的二维数组。 但是我似乎无法打印单个元素。

p array2D[0][0]

给我

无法对不完整类型执行指针数学运算,尝试强制转换为已知类型,或 void *。

我试图用谷歌搜索,但我找不到任何东西,我不确定我是否遗漏了一些明显的东西。

【问题讨论】:

  • 看起来好像您正试图对引用模块内部定义的指针进行操作。能否提供array2D的声明?
  • p的类型是什么??
  • pgdb中使用的打印命令,不是吗?
  • 具体来说,gdb 认为array2D 是什么类型?通过ptype array2D了解详情
  • 我得到了答案。我使用一个变量(顺便说一句保持不变)而不是#define 作为索引之一。编译器一定对代码做了一些奇怪的事情。如果我使用#define,我可以通过以下方式查看它:p array2D[0][0]

标签: c linux debugging gdb multidimensional-array


【解决方案1】:

p arr[0][0] 为我工作我的测试代码:

#include<stdio.h>
int main()
{
  int a[3][3];
  a[0][0]=1;
  a[0][1]=2;
  return 0;
}

在 gdb 上:

(gdb) b test.c:6
Breakpoint 1 at 0x400473: file test.c, line 6.
(gdb) r
Starting program: a.out

Breakpoint 1, main () at test.c:6
6       a[0][1]=2;
(gdb) p a[0][0]
$1 = 1
(gdb) ptype a
type = int [3][3]

所以不是p arr[0][0],这是问题所在。

【讨论】:

    猜你喜欢
    • 2020-06-14
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-14
    相关资源
    最近更新 更多