This is the mail archive of the gdb@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

printing array in function


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
http://www-poleia.lip6.fr/~sabouret


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]