Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 20 Jul 2016 14:39:55 -0600
From:      Warner Losh <wlosh@bsdimp.com>
To:        John Baldwin <jhb@freebsd.org>
Cc:        freebsd-arch@freebsd.org, Sean Bruno <sbruno@freebsd.org>
Subject:   Re: Retiring in-tree GDB
Message-ID:  <B11C1EC4-B7D4-43DA-A291-5DDF0D1AC2B8@bsdimp.com>
In-Reply-To: <3871457.xzmrTRH8AM@ralph.baldwin.cx>
References:  <2678091.es0AGJQ0Ou@ralph.baldwin.cx> <4450836.nX37FfBzNy@ralph.baldwin.cx> <068a0167-1d5d-a437-60e7-b74e407060a2@freebsd.org> <3871457.xzmrTRH8AM@ralph.baldwin.cx>

next in thread | previous in thread | raw e-mail | index | archive | help

> On Jul 20, 2016, at 2:19 PM, John Baldwin <jhb@freebsd.org> wrote:
>=20
> On Wednesday, July 20, 2016 01:20:34 PM Sean Bruno wrote:
>>=20
>> On 07/20/16 13:00, John Baldwin wrote:
>>> On Tuesday, October 20, 2015 01:36:28 PM John Baldwin wrote:
>>>> When this topic was last raised (by Warner I believe), the primary =
objection
>>>> (certainly my main one) was that the in-tree kgdb was the only =
kernel debugger
>>>> available.  kgdb is now available via the devel/gdb port in ports =
(and as of
>>>> last week was enabled by default, so 'pkg install gdb' will get you =
a kgdb
>>>> binary).  The kgdb in ports is in general superior to the one in =
the base
>>>> system.  It is a cross debugger by default (and with my pending =
patches to
>>>> libkvm it even supports cross debugging of vmcores).
>>>>=20
>>>> There are some issues still with devel/gdb: namely it does not =
currently
>>>> support some of the platforms supported by our in tree gdb such as =
arm and
>>>> mips.  For these platforms I think the in-tree gdb will need to =
remain until
>>>> there is a suitable alternative.
>>>>=20
>>>> However, I would like to propose that we retire the in-tree GDB for =
some of
>>>> our platforms (namely x86) for 11.  In particular, I think we =
should default
>>>> to enabling lldb and disabling gdb for platforms that meet the =
following
>>>> criteria:
>>>>=20
>>>> 1) devel/gdb works including thread and kgdb support
>>>> 2) lldb works
>>>>=20
>>>> We could perhaps be more aggressive and handle lldb and gdb toggles
>>>> independently, but I think we want to ship some sort of userland =
debugger
>>>> out of the box on all of our platforms.  The question I think might =
be if
>>>> we end up with platforms where 1) is true but 2) is not (such as =
powerpc).
>>>>=20
>>>> I believe that these conditions are only true for x86 currently.
>>>>=20
>>>> Comments?
>>>=20
>>> I believe I've fixed the one last thing that was depending on =
/usr/bin/gdb
>>> (crashinfo) to use devel/gdb if it is present.  I'd either like to =
disable
>>> the base gdb on amd64 in the next week or so on HEAD, or perhaps if =
people are
>>> really gutsy, disable it for all platforms on HEAD.  We still don't =
have kgdb
>>> in ports for non-x86 (though for ppc at least kgdb in ports and base =
is
>>> equally dysfunctional).
>>>=20
>>> However, to start with:
>>>=20
>>> 1) Does anyone have a reason to keep /usr/bin/gdb on amd64?
>>>=20
>>> 2) Does anyone have a reason to keep /usr/bin/gdb on !amd64?
>>>=20
>>=20
>> I don't have an immediate use case in the mips/mips64 case.  Should
>> ports "just work" here or do I need some kind of "cross gdb"?
>=20
> ports gdb does not yet work on mips.  Once it supports mips it will =
work as
> both a native and cross debugger, but it just doesn't know about =
FreeBSD/mips
> at all.  Does /usr/bin/gdb work on mips?

It does, kinda. there=E2=80=99s a lot of stuff it gets right, so it can =
be useful. However,
there=E2=80=99s enough wrong that it=E2=80=99s super frustrating. So =
there=E2=80=99s a low bar to
replacement. If I can build a new /bin/cat and debug it with a ports =
gdb,
even if things are broken that kinda work now, I=E2=80=99m all for =
replacement.

If /usr/bin/gdb were super duper cool on mips, I=E2=80=99d have a =
different take, but
gdb on mips has never been stellar.

Warner=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?B11C1EC4-B7D4-43DA-A291-5DDF0D1AC2B8>