Date: Tue, 31 Aug 2010 22:41:35 +0200 From: Benedict Reuschling <bcr@FreeBSD.org> To: John Baldwin <jhb@FreeBSD.org>, freebsd-hackers@FreeBSD.org, doc@FreeBSD.org Subject: Re: Debugging Loadable Modules Using GDB Message-ID: <4C7D68FF.9080209@FreeBSD.org> In-Reply-To: <20100831192716.GB5521@debmaster-laptop> References: <20100827201140.GA2812@debmaster-laptop> <201008301310.38148.jhb@freebsd.org> <20100830203404.GC3135@debmaster-laptop> <201008301734.01740.jhb@freebsd.org> <20100831192716.GB5521@debmaster-laptop>
next in thread | previous in thread | raw e-mail | index | archive | help
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Am 31.08.10 21:27, schrieb Alexander Fiveg: > 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 :) I recently grabbed that the PR regarding the removal of the two sections in question: http://www.freebsd.org/cgi/query-pr.cgi?pr=docs/143342 Since I'm pretty blank when it come to knowledge about kld-debugging, I would appreciate some help integrating these changes you are discussing. If someone would write some sections about how this is being done, I volunteer to do the doc-related parts (formatting, grammar, sgml-markup and such). Otherwise, I would just remove these sections and close the PR. Regards Benedict Reuschling Mail: bcr@FreeBSD.org The FreeBSD Documentation Project FreeBSD German Documentation Project - https://doc.bsdgroup.de -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.8 (Darwin) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAkx9aPcACgkQTSZQLkqBk0j4hwCgj2DHo7PPNsDbWELdVXn8Dw4g UBQAnRGZB666EVGbU0u4ALLFWJPTbJ/C =u0gb -----END PGP SIGNATURE-----
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4C7D68FF.9080209>