> On Sep 12, 2019, at 7:33 PM, Adrian Prantl <apra...@apple.com> wrote:
> 
> 
> 
>> On Sep 12, 2019, at 4:45 PM, Rocky Bernstein <r...@dustyfeet.com 
>> <mailto:r...@dustyfeet.com>> wrote:
>> 
>> 
>> 
>> On Thu, Sep 12, 2019 at 5:51 PM Adrian Prantl <apra...@apple.com 
>> <mailto:apra...@apple.com>> wrote:
>> 
>> 
>> > On Sep 12, 2019, at 2:24 PM, Rocky Bernstein <r...@dustyfeet.com 
>> > <mailto:r...@dustyfeet.com>> wrote:
>> > 
>> > 
>> > 
>> > On Thu, Sep 12, 2019 at 3:37 PM Adrian Prantl <apra...@apple.com 
>> > <mailto:apra...@apple.com>> wrote:
>> >> 
>> >> > On Sep 11, 2019, at 1:08 AM, Rocky Bernstein via lldb-dev 
>> >> > <lldb-dev@lists.llvm.org <mailto:lldb-dev@lists.llvm.org>> wrote:
>> >> > 
>> >> > 
>> >> > Hi - I just wanted to mention that if there are emacs users there is an 
>> >> > interface to lldb via realgud. See 
>> >> > https://github.com/realgud/realgud-lldb 
>> >> > <https://github.com/realgud/realgud-lldb>
>> >> > 
>> >> > A MELPA package and ELPA packageElpa package are available too 
>> >> 
>> >> Nice. It's always exciting to see wider adoption through better editor 
>> >> integration. Out of curiosity, how does this compare to regular gud.el? 
>> >> (https://opensource.apple.com/source/lldb/lldb-69/utils/emacs/gud.el.auto.html
>> >>  
>> >> <https://opensource.apple.com/source/lldb/lldb-69/utils/emacs/gud.el.auto.html>)
>> > 
>> > "Regular" gud? The most recent copyright on that link is 2008. I see a 
>> > gud.el in 26.2 and in the GNU savannah git sources, but neither mentions 
>> > lldb. Assuming that file is really from 2008, has lldb changed since then? 
>> > (This is a rhetorical question).  But the broader question is really who 
>> > is maintaining that file you link, clearly it is not the GNU Emacs 
>> > community. And how easy is it to do so? I see an "arch" tag on the file, 
>> > so I guess this in version control somewhere. But if there is a bug in 
>> > this file, what does one do? (This is not a rhetorical question; if you 
>> > know the answer, I am interested.)
>> 
>> I think this file is effectively abandoned as it is neither part of the LLDB 
>> repository nor is it shipping with emacs in macOS any longer.
>> 
>> > Adapted from https://github.com/realgud/realgud/blob/master/realgud.el 
>> > <https://github.com/realgud/realgud/blob/master/realgud.el>
>> > 
>> >> Here we make use of more modern programming practices, more numerous and 
>> >> smaller files, unit tests, and better use of Emacs primitives, e.g. 
>> >> buffer marks, buffer-local variables, structures, rings, hash tables. 
>> >> Although there is still much to be desired, this code is more scalable 
>> >> and suitable as a common base for an Emacs front-end to modern debuggers.
>> >> Oh, and because global variables are largely banned, we can support 
>> >> several simultaneous debug sessions.
>> 
>> > gdb-mi has a nicer multi-frame display,  but you were linking to gud.el 
>> > which doesn't have that as far as I know. realgud-lldb at this point 
>> > probably knows more about lldb. But you guys can probably verify that, and 
>> > if realgud-lldb is lacking, I'd be interested to learn what should be 
>> > added. 
>> > 
>> > gud has always been a bit too monolithic - it contains every debugger 
>> > (including some obsolete ones - does anyone really still use dbx, and if 
>> > so inside Emacs?). All of this is in that one several-thousand-line file. 
>> > I find this ironic because the principal author is wrote something about 
>> > "Cathedral versus Bazaar" and this is clearly Cathedral style. 
>> > 
>> > It took me quite a while to be able to break realgud into several distinct 
>> > files. In fact I had to write my own nodejs-like "require" package to be 
>> > able to do internal or relative module linking. And then after that, more 
>> > work was done to split off the debuggers from the core debugger module 
>> > into separate github projects.
>> 
>> Thanks for explaining the differences!
>> 
>> Is realgud scraping lldb's console output like gud was or is it using the 
>> LLDB scripting API? If it isn't already you might want to consider using the 
>> scripting API since LLDB's console output is not necessarily stable, but the 
>> scripting API is.
>> 
>> Yes, it scrapes console output and that is a problem. A big problem.
>> 
>> I looked at the LLDB API and that seems pretty extensive and seems to cover 
>> a lot more of what interaction from Emacs would like and is currently 
>> missing.
>> 
>> However as is in its current state, this isn't going to cut it because Emacs 
>> uses its own Lisp, not Python.
>> 
>> I have toyed with the idea of hooking into something more standard, and as I 
>> said, there are so many to choose from. For example, the V8 debugger protcol 
>> works over a websocket,  and speaking over a websocket is something you can 
>> expect IDEs to grok.  Python LLDB's API to say Microsoft's Debug Adaptor 
>> Protocol <https://microsoft.github.io/debug-adapter-protocol/> makes sense, 
>> and https://github.com/vadimcn/vscode-lldb/blob/v1.3.0/MANUAL.md 
>> <https://github.com/vadimcn/vscode-lldb/blob/v1.3.0/MANUAL.md> seems to get 
>> pretty close to that. 
>> 
> 
> [Adding Greg to the conversation]
> 
> What's the relation between that project and 
> https://github.com/llvm/llvm-project/tree/master/lldb/tools/lldb-vscode? 
> <https://github.com/llvm/llvm-project/tree/master/lldb/tools/lldb-vscode?> 
> From the comments it looks like this is actually implementing the Debug 
> Adaptor Protocol?

Yes, we indeed to implement the VS Code debug adaptor protocol. This isn't MI, 
but a different JSON based transport layer that is quite similar to the level 
the GDB MI comes in at. I am happy to answer any questions on the debug adaptor 
protocol if needed. The communication can happen via stdin/out or via a port 
TCP.

_______________________________________________
lldb-dev mailing list
lldb-dev@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

Reply via email to