bhyve remote kgdb does not support kernel modules...
jhb at freebsd.org
Thu Nov 20 17:57:18 UTC 2014
On Saturday, November 15, 2014 1:15:23 pm John-Mark Gurney wrote:
> Julian Elischer wrote this message on Sun, Nov 16, 2014 at 00:23 +0800:
> > On 11/15/14, 5:43 PM, John-Mark Gurney wrote:
> > >John-Mark Gurney wrote this message on Sat, Nov 15, 2014 at 01:37 -0800:
> > >>So, I got remote kgdb working w/ bhyve, but kernel modules aren't
> > >>loaded...
> > >>
> > >>I'm getting:
> > >>(kgdb) bt
> > >>#0 kdb_enter (why=0xffffffff8102ee88 "panic", msg=<value optimized
> > >> at ../../../kern/subr_kdb.c:444
> > >>#1 0xffffffff8094aa79 in vpanic (fmt=<value optimized out>,
> > >> ap=<value optimized out>) at ../../../kern/kern_shutdown.c:739
> > >>#2 0xffffffff8094a8c9 in kassert_panic (fmt=<value optimized out>)
> > >> at ../../../kern/kern_shutdown.c:634
> > >>#3 0xffffffff8093583c in __mtx_lock_flags (c=0xfffff80002919720,
> > >> file=0xffffffff81c3f0fa
> > >>
line=442) at ../../../kern/kern_mutex.c:217
> > >>#4 0xffffffff81c3e3a7 in ?? ()
> > >>#5 0xfffff80002a474a0 in ?? ()
> > >>#6 0xfffff80002919720 in ?? ()
> > >>
> > >>Where those should be in the aesni.ko module... If I run kgdb on a
> > >>local machine, it properly finds the kernel modules... Any hits on
> > >>how to fix this?
> > works for me..
> > the modules I'm debugging are not compiled in.
> > you have to have the modules in the standard place ONE THE GDB HOST.
> > I make a chroot with an image of the machine being debugged, PLUS the
> > sources.
> > and then run kgdb from inside that chroot.
> Ahh, that's right, kgdb isn't smart enough to know when you've pointed
> it to the kernel build dir whereh the modules are... :(
gdb isn't smart enough if you run with all the shared libraries in the
current directory either. Note you can always use 'add-kld /path/to/foo.ko'
when it can't find a useful module path. Also, you don't have to use a
chroot. You can use 'solib-absolute-prefix' (it's documented for shared
libraries and kgdb treats modules as shared libraries) and set it to the
DESTDIR you use when you install the kernel.
% cd /path/to/kernel/amd64/compile/FOO
% make install BINOWN=<you> DESTDIR=/someplace
% kgdb kernel.debug
(kgdb) set solib-absolute-prefix /someplace/
(kgdb) target remote <foo>
(I have a local patch to vmrun.sh on my laptop that always ties a nmdm
interface on COM2 if nmdm is loaded so I can now attach kgdb to any VM
without having to plan ahead).
More information about the freebsd-virtualization