This is the mail archive of the gdb@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: GDB/MI questions


On 2017-01-19 11:03, Bob Rossi wrote:
On Thu, Jan 19, 2017 at 10:47:21AM -0500, Simon Marchi wrote:
On 2017-01-19 10:11, Bob Rossi wrote:
>I'm just trying to provide the same functionality I did when I was using
>annotations. This was one of the noted differences.
>
>Since the MI differs in this area, I've done as you suggested and
>that works well. I guess I'll see if there are any downsides here.
>
>Thanks,
>Bob Rossi

From experience (I'd like to be proven wrong), it will be very difficult to
accurately re-create the gdb console "experience" when using MI.  The
commands that should or should not repeat is just one example. Consider history, tab completion, readline bindings (e.g. ctrl-R), pagination, etc.
How does that work with the MI version of cgdb?

CGDB links to readline so the interaction is all very similar.

I'm curious how completion works currently (with annotations) for example. When the user presses tab, does readline call a callback that you specified in CGDB in order to get the completion candidates? Then, you get that information from gdb and return it? If so, how do you get it? The "complete" command?

If it already works fine like that, then I guess it can work

If I understand correctly how annotations work, when the user types, they
are interacting directly with gdb.  So when they press tab to get a
completion, it's handled by gdb.  With MI, the user interacts with the
front-end, which in turns talk to gdb.  So the front-end would have to
re-implement all those features.

Yes, CGDB has supported tab completion for a long time.

This is why gdb has this "new-ui" command that Pedro mentioned. Instead of trying to emulate a gdb console, the front-end can start GDB in standard console mode (redirecting its i/o to an embedded terminal emulator) and open a channel on the side with new-ui for MI commands. This way, when using the console, the user interacts directly with gdb, and gets the real console
experience.

I might give that a try. However, since CGDB already has great terminal
emulation, it's not a huge deal. The other downside is, CGDB works with
lots of GDB's. Using this feature leaves behind many GDBs. Or I'd have
to support two modes. Yuck.

You are right, that's the downside of newer stuff...


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]