Re: Hopefully Simple Question on Debugging Kernel Modules

From: Daniel O'Connor <doconnor_at_gsoft.com.au>
Date: Sat, 21 Feb 2009 13:17:33 +1030
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


Received on Sat Feb 21 2009 - 01:47:51 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:42 UTC