bhyve remote kgdb does not support kernel modules...

John Baldwin 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 
out>)
> > >>     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, 
opts=0,
> > >>     file=0xffffffff81c3f0fa 
> > >>     
"/usr/home/jmg/freebsd.p4/opencrypto/sys/modules/aesni/../../crypto/aesni/aesni.c", 
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.

That is:

% cd /path/to/kernel/amd64/compile/FOO
% make
% 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).

-- 
John Baldwin


More information about the freebsd-virtualization mailing list