On Feb 19, 2008 11:38 AM, Michael Snyder <msnyder specifix.com> wrote:
>
> On Sun, 2008-02-17 at 20:00 -0800, Ray Hurst wrote:
> > It seemed that this question was better suited for
the development group
> > than in the general group.
> >
> > How do you debug gdb?
> >
> > In other words, if I have a problem with gdb
itself how do I go about
> > debugging the issue?
>
> It's a little counter intuitive, but just as you
compile GCC
> with GCC, you also debug GDB with GDB.
>
> After all, GDB is just a program...
>
> If you do it in the build directory, you will find
that
> there is already some infrastructure in place. See
the
> existing file ".gdbinit", which sets some
breakpoints
> and changes the prompt.
>
> Changing the prompt is perhaps the number one
> most important thing to do --- that way you can
> tell by looking at the prompt whether you are
> talking to the gdb-being-debugged or to the
> gdb-doing-the-debugging.
A couple more things that mighn't be immediately clear.
If you're in the child gdb (the prompt is "(gdb)
") and you want to
get to the parent gdb, and you're using .gdbinit in the
build
directory, then you just type "i". To get back to
the child gdb,
continue. As in
(gdb) i
(top-gdb) c
(gdb)
Another useful thing is to rebuild gdb with -O0 if not done
already.
bash$ cd obj/gdb
bash$ make clean
bash$ make CFLAGS=-g
bash$ gdb ./gdb
[...]
(top-gdb)
Generally there's no need to debug bfd/etc. but one could
rebuild
those too as necessary.
|