[lldb-dev] Emacs LLDB support & the GDB/MI Interface

Eli Zaretskii via lldb-dev lldb-dev at lists.llvm.org
Sat Jul 29 21:05:52 PDT 2017


On July 30, 2017 6:30:04 AM GMT+03:00, Zachary Turner <zturner at google.com> wrote:
> Are we talking about some kind of mi support other than lldb's
> existing MI
> interface? Afaik it works reasonably well (for some definition of
> reasonably well), and is even used for example in msvc on windows to
> support remote debugging of non windows targets.
> 
> That said, most lldb developers are paid by their company to work on
> specific things that are important to their company's users, and emacs
> support is probably not going to be that high up on the list.
> 
> So if you can figure out where the deficiencies are in the existing mi
> implementation, patches are always welcome
> On Sat, Jul 29, 2017 at 7:39 PM Eli Zaretskii via lldb-dev <
> lldb-dev at lists.llvm.org> wrote:
> 
> > > Date: Sat, 29 Jul 2017 22:43:59 +0200
> > > Cc: lldb-dev at lists.llvm.org
> > > From: Jan Kratochvil via lldb-dev <lldb-dev at lists.llvm.org>
> > >
> > > MI protocol was designed to minimize the amount of data
> transferred
> > between
> > > gdb/lldb and a front end.  But this communication isn't anything
> > expensive as
> > > the debugger always runs on the same host as the frontend anyway
> > > (gdb/lldb<->gdbserver link is for remote debugging). 
> Unfortunately
> > complexity
> > > of the GDB/MI protocol from this misoptimization leads to many
> bugs on
> > both
> > > sides of the implementation, for GDB:
> > >
> >
> https://sourceware.org/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=SUSPENDED&bug_status=WAITING&bug_status=REOPENED&component=mi&list_id=37310&product=gdb&query_format=advanced
> > >       101 bugs found.
> > >
> > > The MI protocol in use does not conform to its spec as there is a
> > bug-to-bug
> > > compatibility instead such as:
> > >       https://sourceware.org/ml/gdb-patches/2008-11/msg00275.html
> > >
> > > There still also isn't any reasonable MI library to be used by a
> front
> > end.
> >
> > Correct or not, buggy or not, the Emacs support for GDB is based on
> > MI, and it works reasonably well for the last few years.  So much so
> > that Emacs developers have deprecated the previous GUD interface
> based
> > on annotations (which are also deprecated by the GDB team).
> >
> > > I find the LLDB API to be a better choice to be used by the
> > frontend/emacs
> > > (I have only little but great experience with the LLDB API).
> >
> > Good luck with that attitude having LLDB support in Emacs any time
> > soon.  Even supporting it via the ancient GUD, which required a
> couple
> > of minor changes, was met with some resistance.  (Some think that
> this
> > resistance was overcome, but IMO the jury is still out on that one,
> > and we won't know the truth until an attempt to add that support is
> > made in earnest.)
> >
> > Having LLDB support MI would solve this problem cleanly and
> > seamlessly.  It's your call to decide whether Emacs support is
> > important enough to you to do that.
> > _______________________________________________
> > lldb-dev mailing list
> > lldb-dev at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
> >

Last time I tried, it wasn't "reasonable" enough to start debugging a
program under Emacs.  See this discussion for details:

http://lists.llvm.org/pipermail/llvm-dev/2016-December/108512.html

The failed commands it shows are the initial ones issued by Emacs
when a debugging session starts.  Without support of these commands in lldb-mi there's no hope for any
practical debugging using lldb.
If llvm developers could implement those minimal commands, maybe the
rest would be easier.


More information about the lldb-dev mailing list