From owner-freebsd-hackers@FreeBSD.ORG Fri May 15 16:00:05 2015 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id BF56993F; Fri, 15 May 2015 16:00:05 +0000 (UTC) Received: from mail.ignoranthack.me (ignoranthack.me [199.102.79.106]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id A10BE1E25; Fri, 15 May 2015 16:00:05 +0000 (UTC) Received: from [192.168.200.214] (unknown [50.136.155.142]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: sbruno@ignoranthack.me) by mail.ignoranthack.me (Postfix) with ESMTPSA id 66419193656; Fri, 15 May 2015 16:00:04 +0000 (UTC) Message-ID: <55561803.9050102@ignoranthack.me> Date: Fri, 15 May 2015 09:00:03 -0700 From: Sean Bruno Reply-To: sbruno@freebsd.org User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 To: John Baldwin , freebsd-hackers@freebsd.org Subject: Re: How to get anything useful out of kgdb? References: <554E41EE.2010202@ignoranthack.me> <2063489.pgabuk9nPJ@ralph.baldwin.cx> In-Reply-To: <2063489.pgabuk9nPJ@ralph.baldwin.cx> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 15 May 2015 16:00:05 -0000 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 On 05/15/15 08:50, John Baldwin wrote: > 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. > So one non-obvious thing that I'd like an explanation about: If I manually break to the debbugger and cause a dump (doadump), how do I poke around in the crash dump later on to find a thread that I'm looking for, e.g. I want to poke at various bits inside em(4). sean -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQF8BAEBCgBmBQJVVhgAXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXRCQUFENDYzMkU3MTIxREU4RDIwOTk3REQx MjAxRUZDQTFFNzI3RTY0AAoJEBIB78oecn5kTR0IANHGeY0qH9wj8OKBUcAV/anR 8fpZMd4KxBIxy+2K2/TsAHWbXYDS+q/0LBNLI919ArDmPdR00iJjnMOCmBc4gCJr 53943f1x5+qKgtVVN9rQdKfHl6SilG2EeVI79HJasVNaghiV7o5vseu8p6FtQgai ytJPh5eWwBbNkYr0h9aNlXnODiqaZWLfwzSha/1VIU9nuhb1/zDh6O/MyvmuOF1B zu9kaNRyLSQBSe/YIK3D5pKiAotM4D/AQIkylc+Pan1G2JKIbqiaEqpETnjNQTSM BbVv7ccTEQXb+jow09z4JsAXyphVU7Jn+XdB7xnw0cUNkuUWMPy7x98dOJ10rM0= =jntV -----END PGP SIGNATURE-----