C数组大小通过gdb

bph*_*bph 12 c gdb

我知道你可以在gdb中打印一个数组,例如

(gdb) p *array@10
Run Code Online (Sandbox Code Playgroud)

是否有一个gdb命令可以告诉你它的长度,例如键入以下内容的方便快捷方式:

(gdb) p sizeof(array)/sizeof(int)
Run Code Online (Sandbox Code Playgroud)

如果已在编译时定义了数组,并且您想要检查它

小智 17

您可以使用ptype知道符号的类型.

对于int array[5],

(gdb) ptype array
type = int [5]
Run Code Online (Sandbox Code Playgroud)


Kev*_*vin 12

如果它实际上被定义为数组,例如

int array[5];
Run Code Online (Sandbox Code Playgroud)

然后是的,你可以使用你写的东西,虽然更好更通用的方法是:

(gdb) p sizeof(array)/sizeof(*array)
Run Code Online (Sandbox Code Playgroud)

这不假设数组的类型.

如果变量被定义为指针,则为no.

  • @Hiett好吧,如果您只是打印数组,它将打印所有值.除此之外,我不知道. (2认同)