Date: Fri, 29 Oct 1999 14:25:43 -0400 From: Greg Lehey <grog@lemis.com> To: Robert Watson <robert+freebsd@cyrus.watson.org>, FreeBSD Hackers <hackers@FreeBSD.ORG>, committers@mojave.worldwide.lemis.com Subject: Re: gdb and kld symbols -- how to (and handbook is outdated) Message-ID: <19991029142543.26735@mojave.worldwide.lemis.com> In-Reply-To: <Pine.BSF.3.96.991029090302.35544A-100000@fledge.watson.org>; from Robert Watson on Fri, Oct 29, 1999 at 09:05:15AM -0400 References: <Pine.BSF.3.96.991029090302.35544A-100000@fledge.watson.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Friday, 29 October 1999 at 9:05:15 -0400, Robert Watson wrote: > > I've mostly debugged kernel modules running as lkm's, but decided to start > up my debugger on code in a kld a couple of days, and needless to say the > procedure is different :-). And unfortunately, also not documented in the > handbook online, which still talks about lkms. Any suggestions? It is > presumably still add-symbol-file, but with a different offset? > > Also, it might be desirable to either extend the handbook to also talk > about klds, or to replace it with a kld page. This questions qualifies as "in-depth technical", so I'm moving it to -hackers. If you're not signed up there, you should be. I'm also copying -committers because it's probably of interest there. The object you need is in /modules. For example, to debug the Linux kld, you need to load the symbols from /modules/linux.ko. That's the easy part. The difficult part is to find the base address. I have this in /usr/src/sys/modules/vinum/.gdbinit.vinum.paths: define asf set $file = linker_files.tqh_first set $found = 0 while ($found == 0) if (*$file->filename == 'v') set $found = 1 else set $file = $file->link.tqe_next end end shell /usr/bin/objdump --section-headers /modules/vinum.ko | grep ' .text' | awk '{print "add-symbol-file /modules/vinum.ko \$file->address+0x" $4}' > .asf source .asf end This goes through an internal kernel list and looks for a module name which begins with 'v'; you'll need to change the first "if" statement to something which uniquely matches your kld. The rest (modulo file names, which I have omitted here) should stay the same. There's also more information in vinum(4). Greg -- When replying to this message, please copy the original recipients. For more information, see http://www.lemis.com/questions.html Finger grog@lemis.com for PGP public key See complete headers for address and phone numbers To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19991029142543.26735>