This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Re: gdb printing of dynamically allocated matrix
On Wed, 18 Jul 2007, Peter Toft wrote:
> On Wed, 18 Jul 2007, Daniel Jacobowitz wrote:
>
> > On Wed, Jul 18, 2007 at 01:22:33PM +0200, Peter Toft wrote:
> > > * 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 don't believe this is possible without writing a user-defined
> > command for it - see the manual.
>
> Something like
>
> define matprint
> set $i = 0
> while $i< $arg1
> echo $arg0[$i++][0] @ $arg2
> end
> end
>
> so I then can do
> (gdb) matprint c 2 3
>
> close but I quess it can be made better[1]
or ...
define matprint2
set $i = 0
print
printf "{{"
while $i< $arg1
set $j = 0
printf "%d",$arg0[$i][$j++]
while $j< $arg2
printf ", %d",$arg0[$i][$j++]
end
printf "}"
set $i = 1+$i
if $i < $arg1
printf ", {"
end
end
printf "}\n"
end
(gdb) matprint c 2 3
{{2, -2, 22}, {12, -12, 212}}
>From the manual I don't understand how the macro is further hacked to also
give the exact output format as
(gdb) print c
$1 = {{2, -2, 22}, {12, -12, -12}}
so my matprint does not insert into a dollar variable - can someone help
with this last part?
/peter
>
>
> >
> > > How come that the next vector contains wrong values?
> >
> > It's printing six consecutive elements from memory.
>
> Yeah - seems to be the case
>
> Thanx Daniel
>
> Best regards
>
> Peter
>
> [1] after GDB-101 manual crash reading :)
>
> --
> Peter Toft, Ph.D. [pto@linuxbog.dk] http://petertoft.dk
> Følg min Linux-blog på http://www.version2.dk/blogs/petertoft
>
--
Peter Toft, Ph.D. [pto@linuxbog.dk] http://petertoft.dk
Følg min Linux-blog på http://www.version2.dk/blogs/petertoft