Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Nick Roberts <nickrob@snap.net.nz>
To: gdb-patches@sources.redhat.com
Subject: Re: RFC: MI output during program execution
Date: Mon, 15 Aug 2005 02:13:00 -0000	[thread overview]
Message-ID: <17151.52148.262754.334426@farnswood.snap.net.nz> (raw)


I've read most of the discussion through the archives.  I find the idea of
notifying the frontend about all changes of state a laudable goal but
currently too difficult (for me).  However, I would still like GDB to
convey to the frontend when the inferior is running.  Jim's point about the
"define" command shoots down the patch that I sent earlier so I would like to
suggest another approach.  I would like to take the "^running" and "*stopped"
tokens out of mi-main.c and put them in infrun.c where annotate_starting and
annotate_stopped are respectively called.  This seems more in line with the
idea of notification and works when I test it natively on GNU/Linux.  I am
sure that it will fail somewhere else (remote targets?) otherwise this
approach would have surely been used in the first place.

With this method user-defined commands work as for simple GDB commands.  CLI
commands don't give full MI output but information like the current line can
be obtained by polling with -stack-info-frame.

-exec-next
^running
(gdb) 
*stopped,reason="end-stepping-range",thread-id="0",frame={addr="0x080484ef",func="main",args=[{name="argc",value="1"},{name="argv",value="0xbffff794"}],file="myprog.c",fullname="/home/nick/myprog.c",line="46"}
(gdb) 
n
&"n\n"
^running
(gdb) 
~"47\t  int n1=7, n2=8, n3=9;\n"
*stopped
^done
(gdb) 

Using strcmp (interpreter_p, "mi") and not strncmp (interpreter_p, "mi", 2)
means that this should only change behaviour for the current mi level.

WDYT?

Nick

*** infrun.c.~1.203~	2005-08-15 10:38:14.000000000 +1200
--- infrun.c	2005-08-15 10:42:50.000000000 +1200
***************
*** 49,54 ****
--- 49,57 ----
  
  #include "gdb_assert.h"
  #include "mi/mi-common.h"
+ #include "mi/mi-out.h"
+ 
+ extern struct ui_file *raw_stdout;
  
  /* Prototypes for local functions */
  
*************** proceed (CORE_ADDR addr, enum target_sig
*** 785,790 ****
--- 788,799 ----
  
    annotate_starting ();
  
+   if (strcmp (interpreter_p, "mi") == 0)
+     {
+       fputs_unfiltered ("^running\n", raw_stdout);
+       fputs_unfiltered ("(gdb) \n", raw_stdout);
+     }
+ 
    /* Make sure that output from GDB appears before output from the
       inferior.  */
    gdb_flush (gdb_stdout);
*************** Further execution is probably impossible
*** 3136,3141 ****
--- 3145,3158 ----
  done:
    annotate_stopped ();
    observer_notify_normal_stop (stop_bpstat);
+   if ((strcmp (interpreter_p, "mi") == 0) || (ui_out_is_mi_like_p (uiout)))
+       fputs_unfiltered ("*stopped", raw_stdout);
+   if (ui_out_is_mi_like_p (uiout))
+     {
+       mi_out_put (uiout, raw_stdout);
+       mi_out_rewind (uiout);
+     }
+   fputs_unfiltered ("\n", raw_stdout);
  }
  
  static int


*** mi/mi-main.c.~1.80.~	2005-06-14 09:18:08.000000000 +1200
--- mi/mi-main.c	2005-08-14 20:10:44.000000000 +1200
*************** mi_execute_async_cli_command (char *mi, 
*** 1306,1313 ****
           command. */
        if (last_async_command)
  	fputs_unfiltered (last_async_command, raw_stdout);
-       fputs_unfiltered ("^running\n", raw_stdout);
-       fputs_unfiltered ("(gdb) \n", raw_stdout);
        gdb_flush (raw_stdout);
      }
    else
--- 1306,1311 ----
*************** mi_execute_async_cli_command (char *mi, 
*** 1318,1324 ****
           run command to the target. */
        if (last_async_command)
  	fputs_unfiltered (last_async_command, raw_stdout);
-       fputs_unfiltered ("^running\n", raw_stdout);
      }
  
    execute_command ( /*ui */ run, 0 /*from_tty */ );
--- 1316,1321 ----
*************** mi_execute_async_cli_command (char *mi, 
*** 1332,1341 ****
           the stopped message. */
        if (last_async_command)
  	fputs_unfiltered (last_async_command, raw_stdout);
-       fputs_unfiltered ("*stopped", raw_stdout);
-       mi_out_put (uiout, raw_stdout);
-       mi_out_rewind (uiout);
-       fputs_unfiltered ("\n", raw_stdout);
        return MI_CMD_QUIET;
      }
    return MI_CMD_DONE;
--- 1329,1334 ----


             reply	other threads:[~2005-08-14 22:52 UTC|newest]

Thread overview: 83+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-08-15  2:13 Nick Roberts [this message]
2005-08-15  4:26 ` Daniel Jacobowitz
2005-08-15 10:03   ` Nick Roberts
2005-08-16  0:04     ` Bob Rossi
2005-08-16  0:33       ` Nick Roberts
2005-08-16  0:43     ` Daniel Jacobowitz
2005-08-16  3:54       ` Bob Rossi
  -- strict thread matches above, loose matches on Subject: below --
2005-08-18 13:28 Nick Roberts
2005-08-19  0:52 ` Mark Kettenis
2005-08-17  3:18 Nick Roberts
     [not found] <1124238360.5670.ezmlm@sources.redhat.com>
2005-08-17  1:10 ` Jim Ingham
2005-08-15  2:15 Nick Roberts
     [not found] <1123605445.30442.ezmlm@sources.redhat.com>
2005-08-09 17:24 ` Jim Ingham
2005-08-09 17:59   ` Bob Rossi
2005-08-09 18:09     ` Jim Ingham
2005-08-09 18:23       ` Bob Rossi
2005-08-09 18:40         ` Jim Ingham
2005-08-10  0:48           ` Daniel Jacobowitz
2005-08-10  0:48             ` Jim Ingham
2005-08-10  2:37               ` Daniel Jacobowitz
2005-08-09 18:13   ` Eli Zaretskii
2005-08-09 18:23     ` Bob Rossi
2005-08-09 19:39       ` Eli Zaretskii
2005-08-10  0:41         ` Bob Rossi
2005-08-10  0:42           ` Daniel Jacobowitz
2005-08-10  1:07             ` Bob Rossi
2005-08-10  2:37               ` Jim Ingham
2005-08-12  8:06                 ` Bob Rossi
2005-08-12 10:36                   ` Eli Zaretskii
2005-08-12 12:05                     ` Bob Rossi
2005-08-12 17:25                       ` Eli Zaretskii
2005-08-12 20:45                         ` Bob Rossi
2005-08-12 20:49                           ` Daniel Jacobowitz
2005-08-13  1:11                             ` Bob Rossi
2005-08-13  1:15                               ` Daniel Jacobowitz
2005-08-13 11:07                             ` Eli Zaretskii
2005-08-12 20:54                           ` Mark Kettenis
2005-08-13 15:05                             ` Bob Rossi
2005-08-12 21:01                         ` Daniel Jacobowitz
2005-08-13 11:13                           ` Eli Zaretskii
2005-08-12 17:03                   ` Jim Ingham
2005-08-13  0:33                     ` Bob Rossi
2005-08-13  0:44                       ` Jim Ingham
2005-08-13  5:04                         ` Bob Rossi
2005-08-13  6:47                           ` Daniel Jacobowitz
2005-08-13 11:06                             ` Jim Ingham
2005-08-13 14:51                               ` Bob Rossi
2005-08-13 16:55                                 ` Daniel Jacobowitz
2005-08-13 12:53                             ` Eli Zaretskii
2005-08-13 21:52                             ` Mark Kettenis
2005-08-13  0:22                   ` Daniel Jacobowitz
2005-08-11 10:10               ` Daniel Jacobowitz
2005-08-08  5:20 Nick Roberts
2005-08-08 13:05 ` Daniel Jacobowitz
2005-08-08 18:23   ` Jim Ingham
2005-08-09 17:32     ` Nick Roberts
2005-08-21 22:09     ` Nick Roberts
2005-08-24  2:20       ` Stan Shebs
2005-08-24 16:59         ` Nick Roberts
2005-08-24 20:15           ` Jim Ingham
2005-08-24 20:48             ` Nick Roberts
2005-08-27 12:09           ` Stan Shebs
2005-09-12  3:20         ` Nick Roberts
2005-09-12  3:40           ` Daniel Jacobowitz
2005-09-19 10:30           ` Nick Roberts
2005-09-19 13:17             ` Daniel Jacobowitz
2005-09-19 22:12               ` Nick Roberts
2005-09-19 22:17               ` Nick Roberts
2005-09-19 22:32                 ` Daniel Jacobowitz
2005-10-03  3:20             ` Nick Roberts
2005-10-03 13:18               ` Daniel Jacobowitz
2005-10-03 20:28                 ` Nick Roberts
2005-10-03 20:31                   ` Daniel Jacobowitz
2005-10-03 21:39                     ` Stan Shebs
2005-10-03 21:50                       ` Jim Ingham
2005-10-03 21:59                         ` Daniel Jacobowitz
2005-10-03 22:01                       ` Daniel Jacobowitz
2006-03-28  0:40                 ` Nick Roberts
2006-03-28 22:12                   ` Daniel Jacobowitz
2006-03-28 22:36                     ` Nick Roberts
2006-03-28 23:13                       ` Daniel Jacobowitz
2005-08-08 21:00 ` Eli Zaretskii
2005-08-09 17:52   ` Nick Roberts

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=17151.52148.262754.334426@farnswood.snap.net.nz \
    --to=nickrob@snap.net.nz \
    --cc=gdb-patches@sources.redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox