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: RFC: MI output during program execution
Date: Mon, 08 Aug 2005 05:20:00 -0000	[thread overview]
Message-ID: <17142.56731.941946.838268@farnswood.snap.net.nz> (raw)


Although Emacs will increasingly use GDB/MI to interact with GDB, the GUD
buffer will always require the use of CLI commands.  These are executed via
"-interpreter-exec console" that Jim Ingham/Apple contributed.  In general
this isn't a problem, but CLI commands which start the inferior e.g run, next,
finish etc do not tell Emacs when the inferior is executing (do not output
^running) and in some cases generate inappropriate output such as the current
source line as CLI output.  I would like to change the output of these
commands to that of their MI counterparts.  I think that Apple have added a
separate interpreter (console-quoted) for this kind of thing.  The patch below
reflects my more modest resources and limited knowledge and seems to do the
kind of thing that Emacs needs.  It doesn't change direct use of MI commands,
just the behaviour of a subset of CLI commands invoked the the MI interpreter:

-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) 

-interpreter-exec console next
^running
(gdb) 
*stopped,reason="end-stepping-range",thread-id="0",frame={addr="0x0804851f",func="main",args=[{name="argc",value="1"},{name="argv",value="0xbffff794"}],file="myprog.c",fullname="/home/nick/myprog.c",line="47"}
^done
(gdb) 

Note that the latter generates an extra ^done as the MI command
-interpreter-exec completes.  I'm not asking for approval at this stage, but
any feedback would be most welcome.

Nick



*** mi/mi-interp.c.~1.15.~	2005-08-01 10:45:28.000000000 +1200
--- mi/mi-interp.c	2005-08-08 11:10:08.000000000 +1200
***************
*** 33,38 ****
--- 33,40 ----
  #include "mi-out.h"
  #include "mi-console.h"
  
+ #include "cli/cli-decode.h"
+ 
  struct mi_interp
  {
    /* MI's output channels */
*************** mi_cmd_interpreter_exec (char *command, 
*** 239,250 ****
           and then set it back to 0 when we are done. */
        sync_execution = 1;
        {
! 	struct gdb_exception e = interp_exec (interp_to_use, argv[i]);
! 	if (e.reason < 0)
  	  {
! 	    mi_error_message = xstrdup (e.message);
! 	    result = MI_CMD_ERROR;
! 	    break;
  	  }
        }
        xfree (buff);
--- 241,288 ----
           and then set it back to 0 when we are done. */
        sync_execution = 1;
        {
! 	struct gdb_exception e;
! 	int flag = 0;
! 
! 	if (strcmp (argv[0], "console") == 0)
! 	  /* Stick with MI for commands which run the inferior. */
! 	  {
! 	    struct cmd_list_element *c;
! 	    extern struct cmd_list_element *cmdlist;
! 	    char *token, *cp;
! 
! 	    flag = 1;
! 	    cp = xstrdup (argv[i]);
! 	    c = lookup_cmd (&cp, cmdlist, "", 0, 0);
! 	    if (strcmp (c->name, "run") == 0)
! 	      mi_cmd_exec_run (cp, 0);
! 	    else if (strcmp (c->name, "next") == 0)
! 	      mi_cmd_exec_next (cp, 0);
! 	    else if (strcmp (c->name, "nexti") == 0)
! 	      mi_cmd_exec_next_instruction (cp, 0);
! 	    else if (strcmp (c->name, "step") == 0)
! 	      mi_cmd_exec_step (cp, 0);
! 	    else if (strcmp (c->name, "stepi") == 0)
! 	      mi_cmd_exec_step_instruction (cp, 0);
! 	    else if (strcmp (c->name, "finish") == 0)
! 	      mi_cmd_exec_finish (cp, 0);
! 	    else if (strcmp (c->name, "until") == 0)
! 	      mi_cmd_exec_until (cp, 0);
! 	    else if (strcmp (c->name, "return") == 0)
! 	      mi_cmd_exec_return (cp, 0);
! 	    else
! 	      flag = 0;
! 	  }
! 
! 	if (!flag)
  	  {
! 	    e = interp_exec (interp_to_use, argv[i]);
! 	    if (e.reason < 0)
! 	      {
! 		mi_error_message = xstrdup (e.message);
! 		result = MI_CMD_ERROR;
! 		break;
! 	      }
  	  }
        }
        xfree (buff);


             reply	other threads:[~2005-08-08  5:20 UTC|newest]

Thread overview: 83+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-08-08  5:20 Nick Roberts [this message]
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
     [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-15  2:13 Nick Roberts
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
2005-08-15  2:15 Nick Roberts
     [not found] <1124238360.5670.ezmlm@sources.redhat.com>
2005-08-17  1:10 ` Jim Ingham
2005-08-17  3:18 Nick Roberts
2005-08-18 13:28 Nick Roberts
2005-08-19  0:52 ` Mark Kettenis

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=17142.56731.941946.838268@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