printing array in function

Nicolas Sabouret
2010-09-03T09:06:04Z

Hi all,

In the frame of a 1st-year course in C (starting in next october), we
are using a sub-set of gdb features (embedded in a geany plugin) to help
our students understand what is going on in their code.

The problem we have is that arrays passed to functions are seen as
pointers by gdb. Here is a simple example :

1: void f(int tab[]) {
2: tab[0] = 1;
3: }
4: int main() {
5: int t[] = {-1,-1};
6: f(t);
7: return 0;
8: }

$ gcc -g -o test test.c
$ gdb test
(gdb) b 6
(gdb) run
(gdb) p t -> {-1, -1}
(gdb) s
(gdb) p tab -> (int *) 0xbffff440

The only solution we found to display tab as an array is to use "p
*tab@2", but this requires knowing the exact size of the array (2 in
this example).

Our problem is that the gdb calls are integrated in a front-end for
students (they do not type gdb commands directly) and that our frontend
has no way of "guessing" what is the correct size for the array.

My question is : is there a way to display an array in a function
(without knowing the size a priori).

Thanks in advance for any help on this subject.
--
Nicolas Sabouret, Assistant Professor
University Pierre & Marie Curie