How to get anything useful out of kgdb?

John Baldwin jhb at freebsd.org
Fri May 15 15:50:56 UTC 2015


On Saturday, May 09, 2015 10:20:46 AM Sean Bruno wrote:
> tl;dr  What are the kernel config options to get good output of kgdb?
> 
> 
> I'm trying to get the ability to debug and display internal variables,
> as one does, with kgdb.  I'm *must* be doing this wrong as I cannot get
> any useful output from accessing variables that were JUST accessed in
> order to invoke a panic() that I have inserted.  This is a GENERIC
> kernel without INVARIANTS and without WITNESS:
> 
> https://people.freebsd.org/~sbruno/wtf_kgdb.txt
> 
> I seem to have debug enabled and am able to browse source, but I
> obviously haven't compiled correctly as things are optimized out.

1) gdb7 does a better job.  I hope to get the kgdb patches into the
port soon.  If you are feeling brave:

# add texinfo for HEAD
% pkg install gmake bison

% git clone https://github.com/bsdjhb/gdb.git
% cd gdb
% git checkout freebsd-7.9.0-kgdb
% fetch http://people.freebsd.org/~jhb/gdb/build
% sh ./build
% cd obj   # or obj.i386 for i386
% gmake

Then use /path/to/git/gdb/obj/gdb/kgdb

2) Even with gdb7 it can't figure out variables that it should figure out
sometimes.  Other options are either to find the variable in a higher
frame (e.g. if it is something like 'td' or a driver softc) or to start
poking around in the dissassembly to work out which register it is in
(or which register points to a structure that contains it) and go from 
there.

-- 
John Baldwin


More information about the freebsd-hackers mailing list