bph
bph

Reputation: 11268

C array size via gdb

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

Upvotes: 16

Views: 20592

Answers (2)

hrkzmnm
hrkzmnm

Reputation: 326

You may use ptype to know the type of a symbol.

For int array[5],

(gdb) ptype array
type = int [5]

Upvotes: 22

Kevin
Kevin

Reputation: 56129

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.

Upvotes: 15

Related Questions