Date: Tue, 31 Aug 2010 21:27:16 +0200 From: Alexander Fiveg <pebu3op@googlemail.com> To: John Baldwin <jhb@freebsd.org> Cc: freebsd-hackers@freebsd.org, doc@freebsd.org Subject: Re: Debugging Loadable Modules Using GDB Message-ID: <20100831192716.GB5521@debmaster-laptop> In-Reply-To: <201008301734.01740.jhb@freebsd.org> References: <20100827201140.GA2812@debmaster-laptop> <201008301310.38148.jhb@freebsd.org> <20100830203404.GC3135@debmaster-laptop> <201008301734.01740.jhb@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Aug 30, 2010 at 05:34:01PM -0400, John Baldwin wrote: > On Monday, August 30, 2010 4:34:04 pm Alexander Fiveg wrote: > > On Mon, Aug 30, 2010 at 01:10:37PM -0400, John Baldwin wrote: > > > On Monday, August 30, 2010 12:12:50 pm Alexander Fiveg wrote: > > > > On Mon, Aug 30, 2010 at 08:16:11AM -0400, John Baldwin wrote: > > > > > On Friday, August 27, 2010 4:11:41 pm Alexander Fiveg wrote: > > > > > > Hi, > > > > > > from "FreeBSD Developers' Handbook, 10.7 Debugging Loadable Modules Using > > > > > > GDB": > > > > > > "... > > > > > > (kgdb) add-symbol-file /sys/modules/linux/linux.ko 0xc0ae22d0 > > > > > > ... > > > > > > " > > > > > > Actually I couldn't debug my modules using .ko-file. Moreover, I've find out > > > > > that .ko files do not contain sections with debugging info. With .kld-file > > > > > debugging works out. Do I something incorrectly or the info in the Developers > > > > > Book is outdated? > > > > > > > > > > With newer versions of kgdb you shouldn't need to manually invoke 'add-symbol- > > > > > file'. Kernel modules are treated as shared libraries and should > > > > > automatically be loaded. Try using 'info sharedlibrary' to see the list of > > > > > kernel modules and if symbols for them are loaded already. > > > > Yes, the .ko files are loaded automatically. The problem is that they do > > > > not contain debugging info. I have always to load the .kld file in order to > > > > debug a module: > > > > > > > > (kgdb) f 9 > > > > #9 0xc4dc558b in rm_8254_delayed_interrupt_per_packet () from > > > > /boot/kernel/if_ringmap.ko > > > > (kgdb) info locals > > > > No symbol table info available. > > > > > > > > (kgdb) add-symbol-file /home/alexandre/p4/ringmap/current/sys/modules/ringmap/if_ringmap.kld 0xc4dafc70 > > > > add symbol table from file "/home/alexandre/p4/ringmap/current/sys/modules/ringmap/if_ringmap.kld" > > > > at > > > > .text_addr = 0xc4dafc70 > > > > (y or n) y > > > > Reading symbols from /home/alexandre/p4/ringmap/current/sys/modules/ringmap/if_ringmap.kld...done. > > > > > > > > (kgdb) f 9 > > > > #9 0xc4dc558b in rm_8254_delayed_interrupt_per_packet () > > > > at /home/alexandre/p4/ringmap/current/sys/modules/ringmap/../../dev/e1000/ringmap_8254.c:142 > > > > 142 co->ring->slot[slot_num].ts = co->ring->last_ts; > > > > > > > > (kgdb) info locals > > > > co = (struct capt_object *) 0xc4d68380 > > > > adapter = (struct adapter *) 0xc4e77000 > > > > __func__ = "E\000\000�\034@\000\000\211\203�E\000\000\017\206B\022\000\000\2039\000\213A\004\017\205�\f\000\000\001��1�" > > > > > > > > > > > > Is there any way to get the all symbols and needed debug info without > > > > loading the .kld file ? > > > > > > How are you compiling the kld? If you are building it by hand, use > > > 'make DEBUG_FLAGS=-g' when you build and install the kld. That should build > > > with debug symbols enabled and install the ko.symbols file which kgdb will > > > find and use. > > Thanks a lot!. That is what I want to know. But I think this option is not > > mentioned anywhere. I could not find it in "man make make.conf" and also > > no mention about it in FreeBSD Developers' Handbook. > > It's a bit of a "feature" of the bsd.*.mk files that if you define > 'DEBUG_FLAGS' it is added to CFLAGS (and CXXFLAGS) and that any resulting > binaries are not stripped, etc. The same trick can be used to build debug > versions of binaries and libraries. It probably is underdocumented. Not > sure make.conf(5) is the right place as the typical usage is on the command > line, not in /etc/make.conf or /etc/src.conf. However, I can't think of a > better place. Maybe src.conf(5)? Anyway, "FreeBSD Developers' Handbook" wouldn't be wrong place for it :) > > -- > John Baldwin -- Alexander Fiveg <pebu3op@googlemail.com> Key fingerprint = ECBB 747C 919D 78F5 E8EC 7DBC 8B46 376D 107B CCAA
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100831192716.GB5521>