Date: Sat, 21 Feb 2009 13:17:33 +1030 From: "Daniel O'Connor" <doconnor@gsoft.com.au> To: freebsd-current@freebsd.org Cc: David Christensen <davidch@broadcom.com> Subject: Re: Hopefully Simple Question on Debugging Kernel Modules Message-ID: <200902211317.41479.doconnor@gsoft.com.au> In-Reply-To: <5D267A3F22FD854F8F48B3D2B5238193394588D54D@IRVEXCHCCR01.corp.ad.broadcom.com>
index | next in thread | previous in thread | raw e-mail
[-- Attachment #1 --]
On Saturday 21 February 2009 10:10:56 David Christensen wrote:
> I'm sure this is a simple question but the answer is alluding my Google
eluding -^
> search capabilities. My driver is being loaded as a kernel module and
> is failing with the following error:
>
> Fatal trap 12: page fault while in kernel mode
> cpuid = 0; apic id = 00
> fault virtual address = 0xfffffffe40abe9dc
> fault code = supervisor write data, page not present
> instruction pointer = 0x8:0xffffffff920b638f
> stack pointer = 0x10:0xffffffff9212bb10
> frame pointer = 0x10:0xffffffff9212bbb0
> code segment = base 0x0, limit 0xfffff, type 0x1b
> = DPL 0, pres 1, long 1, def32 0, gran 1
> processor eflags = interrupt enabled, resume, IOPL = 0
> current process = 12 (irq268: bce0)
> [thread pid 12 tid 100166 ]
> Stopped at bce_intr+0x8df: addl $0x1,0x2c854(%r12,%rax,4)
> db>
>
> I simply need to find the offending source line in my driver. Not sure
> how I've managed to get the driver running at all without this but it's
> time to do things the right way. I have KDB/DDB/GDB built into my
> -CURRENT kernel already. It'd be great to find the source line while in
> the kernel debugger but I'm also fine with rebooting the system to
> identify the line number.
DDB doesn't understand debugging symbols to that degree, however you could
connect a GDB remotely using a serial or firewire connection (the later is
much, much nicer)
I imagine you could get GDB or some other tool to tell you what line that
offset corresponds to but I'm not sure how you go about doing that with
modules loaded unless you have a crash dump (or remote GDB on a live system)
I guess you could also rebuild your .c files with.. -Wa,-adhlmsn=$foo.lst and
look it up that way.
--
Daniel O'Connor software and network engineer
for Genesis Software - http://www.gsoft.com.au
"The nice thing about standards is that there
are so many of them to choose from."
-- Andrew Tanenbaum
GPG Fingerprint - 5596 B766 97C0 0E94 4347 295E E593 DC20 7B3F CE8C
[-- Attachment #2 --]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iD8DBQBJn2tG5ZPcIHs/zowRAkglAKCmlFLD5sdGRfSaMmKCV8fYNTYvLgCeJ/Wd
NVCxj4fFU30jPtmTKR1jXKk=
=TIRH
-----END PGP SIGNATURE-----
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200902211317.41479.doconnor>
