Re: gdb/mi, new-ui. the console and determining when GDB is ready for the next command

Robert Rossi <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <CA+L9JkjNN6WS-Uone-sWPOt_9WxCJ3bY0rBzpo66ZzkhVqt+SA@mail.gmail.com>
Huh. Here is my setup.

$ gdb --version
GNU gdb (GDB) 8.3.1

On terminal one with gdb I have,
  $ gdb  -q -ex "new-ui mi /dev/pts/11" ./test_main
  Reading symbols from ./test_main...
  New UI allocated
  (gdb)
Terminal 2 shows
  $ tty
  /dev/pts/13
  $ sleep 1000
  =thread-group-added,id="i1"
  (gdb) <--- Good

So far everything is good. Now in terminal one I make a breakpoint.

Terminal 1 shows
  (gdb) b main
  Breakpoint 1 at 0x4006c0: file test.cpp, line 42.
  (gdb)
Terminal 2 shows
  (gdb)

=breakpoint-created,bkpt={number="1",type="breakpoint",...,original-location="main"}
<--- No GDB prompt

However it has no gdb prompt.
Now, if I run the program,

Terminal 1 shows,
  (gdb) r
  Starting program:.../test_main

  Breakpoint 1, main (argc=1, argv=0x7fffffffdea8) at test.cpp:42
  42      {
  (gdb)
Terminal 2 shows
  =thread-group-started,id="i1",pid="25913"
  =thread-created,id="1",group-id="i1"
  =library-loaded,id=...
  =library-loaded,id="/lib/x86_6....
  ~"\n"
  ~"Breakpoint 1, main (argc=1, argv=0x7fffffffdea8) at test.cpp:42\n"
  ~"42\t{\n"
  *stopped,reason="breakpoint-hit",...stopped-threads="all",core="0"
  <-- No GDB prompt

In this case also there is no gdb prompt.

Is this expected behavior or an oversight?

Thanks,
Bob Rossi

On Tue, Oct 29, 2019 at 9:21 AM Pedro Alves <[email protected]> wrote:

> On 10/23/19 12:15 AM, Robert Rossi wrote:
> > Hi,
> >
> > The question I have is, how are people determining when GDB is ready for
> > the next
> > command when using the new-ui feature of GDB?
> > Are people parsing the CLI window for (gdb)?
> > Am I missing something obvious?
> >
> > CGDB has historically used annotations to communicate with gdb.
> > This provided pre-prompt and post-prompt annotations to determine when
> the
> > GDB prompt
> > was available and ready for the next command.
> >
> > A couple of years ago I decided to try to port CGDB from annotations to
> MI.
> > At the time I asked the GDB mailing list how to determine when GDB was
> > ready for the next
> > command, Pedro Alves wrote:
> >     GDB is ready for input when it prints the MI prompt.  There's one
> > prompt that is
> >     already printed after ^running that you should ignore. That's an
> > historical wart.
> > I got CGDB working but never completed the activity when I realized that
> > using -i=mi
> > caused GDB to no longer treat the terminal as an interactive terminal.
> > Meaning, GDB wouldn't do tab completion and/or ask the user if they were
> > ready to quit.
> >
> > Now I'm considering trying this again using the GDB new-ui feature.
> > In this mode the CLI remains in the starting terminal and the MI is moved
> > to the new-ui tty.
> > I noticed that in the new-ui window, the MI end token (gdb)\n isn't put
> > out. Is this intentional?
> > In this mode, what's the proper way to determine if GDB is ready for
> > another command?
>
> I'm not sure what you mean -- I see the end token being put out?
>
> Thanks,
> Pedro Alves
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.