问题
I know you can print an array in gdb , e.g.
(gdb) p *array@10
Is there a gdb command that can tell you its length, e.g. a handy shortcut to typing something like:
(gdb) p sizeof(array)/sizeof(int)
In the case where the array has been defined at compile time and you want to check it
回答1:
You may use ptype
to know the type of a symbol.
For int array[5]
,
(gdb) ptype array
type = int [5]
回答2:
If it's actually defined as an array, e.g.
int array[5];
Then yes, you can use what you wrote, although a better and more general way is:
(gdb) p sizeof(array)/sizeof(*array)
This doesn't assume the type of the array.
If the variable is defined as a pointer, then no.
来源:https://stackoverflow.com/questions/8808448/c-array-size-via-gdb