gdb printing of dynamically allocated matrix

Peter Toft pto@linuxbog.dk
Wed Jul 18 17:59:00 GMT 2007


Focus of this mail is GDB on 1D and 2D arrays.

I have pasted a small C-code program at
http://pastebin.com/f63009dd8
(download from http://pastebin.com/pastebin.php?dl=f63009dd8)
which I like your opinion on.

I compile it with "gcc -g"
Throw a breakpoint on line 59 and run under gdb.

* I can see the contents of the "a"-vector in by
  (gdb) print *a @ 3
  Very cool!

* I can see the matrix (2D array) contents of the "c"
  matrix by
  (gdb) print c
  Elegant - very cool!

* However how can I use GDB to see the contents of "b"
  similar to the contents of "c" and "a"?
  The best I can do is
  (gdb) print *b[0] @3
  (gdb) print *b[1] @3
  Obviously I would like to do the display in one command rather
  than several, especially if I changed the b-matrix to be b[7][8]
  I think I will manually have to supply the length of the vectors,
  but it seems that I cannot do a compound GDB-operation like
  (gdb) print **b @3 @2
  and get
  {{2, -2, 22},{12 -12 -12}}
  instead I get
  {{2, -2, 22},{17# 12# -12}}
  where I have inserted #-marks where I find wrong values.
  How come that the next vector contains wrong values?
  Or rather - how can I see the b content in one command?

Best


-- 
Peter Toft <pto@linuxbog.dk>



More information about the Gdb mailing list