Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 15 May 2015 11:50:38 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-hackers@freebsd.org, sbruno@freebsd.org
Subject:   Re: How to get anything useful out of kgdb?
Message-ID:  <2063489.pgabuk9nPJ@ralph.baldwin.cx>
In-Reply-To: <554E41EE.2010202@ignoranthack.me>
References:  <554E41EE.2010202@ignoranthack.me>

next in thread | previous in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?2063489.pgabuk9nPJ>