From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10756 invoked by alias); 10 Sep 2009 00:58:59 -0000 Received: (qmail 10680 invoked by uid 22791); 10 Sep 2009 00:58:57 -0000 X-SWARE-Spam-Status: No, hits=-2.2 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_37 X-Spam-Check-By: sourceware.org Received: from rock.gnat.com (HELO rock.gnat.com) (205.232.38.15) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 10 Sep 2009 00:58:52 +0000 Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id 13CB12BABE4; Wed, 9 Sep 2009 20:58:51 -0400 (EDT) Received: from rock.gnat.com ([127.0.0.1]) by localhost (rock.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id fa5j4jUXNTJL; Wed, 9 Sep 2009 20:58:50 -0400 (EDT) Received: from joel.gnat.com (localhost.localdomain [127.0.0.1]) by rock.gnat.com (Postfix) with ESMTP id BF4BB2BABDD; Wed, 9 Sep 2009 20:58:50 -0400 (EDT) Received: by joel.gnat.com (Postfix, from userid 1000) id EC2CCF589B; Wed, 9 Sep 2009 17:58:42 -0700 (PDT) Date: Thu, 10 Sep 2009 00:58:00 -0000 From: Joel Brobecker To: Eli Zaretskii Cc: gdb-patches@sourceware.org Subject: Re: PING: [RFA/doco] document "set/show interactive-mode" Message-ID: <20090910005842.GF20694@adacore.com> References: <20090623181341.GK5085@adacore.com> <20090909180355.GE20694@adacore.com> <8363bs2al9.fsf@gnu.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="H+4ONPRPur6+Ovig" Content-Disposition: inline In-Reply-To: <8363bs2al9.fsf@gnu.org> User-Agent: Mutt/1.5.18 (2008-05-17) Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2009-09/txt/msg00263.txt.bz2 --H+4ONPRPur6+Ovig Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-length: 172 Hi Eli, Thanks for the super-fast reply. Here is a new version which hopefully addresses all your comments (and adds a NEWS entry). Does it look better? Thanks, -- Joel --H+4ONPRPur6+Ovig Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="interactive.diff" Content-length: 5249 commit d58a0dcbec3bc69d86509c2c5bc30642be11dffe Author: Joel Brobecker Date: Wed Sep 9 17:39:10 2009 -0700 gdb/: * top.c (interactive_mode): New static variable. (show_interactive_mode): New function. (input_from_terminal_p): If interactive_mode is not auto, then use that rather than checking the stdin settings. (init_main): Add "set/show interactive-mode" command. * NEWS: Add entry for new "set/show interactive-mode" command. gdb/doc/: Add documentation for set/show interactive-mode. * gdb.texinfo (Other Misc Settings): New node. diff --git a/gdb/NEWS b/gdb/NEWS index e3e6774..14da6c8 100644 --- a/gdb/NEWS +++ b/gdb/NEWS @@ -400,6 +400,14 @@ show stack-cache performance of remote debugging (particularly backtraces) without affecting correctness. +set interactive-mode (on|off|auto) +show interactive-mode + Control whether GDB runs in interactive mode (on) or not (off). + When in interactive mode, GDB waits for the user to answer all + queries. Otherwise, GDB does not wait and assumes the default + answer. When set to auto (the default), GDB determines which + mode to use based on the stdin settings. + * Removed commands info forks diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 52ead12..7b26675 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -17620,6 +17620,7 @@ described here. * ABI:: Configuring the current ABI * Messages/Warnings:: Optional warnings and messages * Debugging Output:: Optional messages about internal happenings +* Other Misc Settings:: Other Miscellaneous Settings @end menu @node Prompt @@ -18250,6 +18251,28 @@ Turns on or off debugging messages for built-in XML parsers. Displays the current state of XML debugging messages. @end table +@node Other Misc Settings +@section Other Miscellaneous Settings +@cindex miscellaneous settings + +@table @code +@kindex set interactive-mode +@item set interactive-mode +If @code{on}, forces @value{GDBN} to operate interactively. +If @code{off}, forces @value{GDBN} to operate non-interactively, +If @code{auto} (the default), @value{GDBN} guesses which mode to use, +based on whether the debugger was started in a terminal or not. + +In the vast majority of cases, the debugger should be able to guess +correctly which mode should be used. But this setting can be useful +in certain specific cases, such as running a MinGW @value{GDBN} +inside a cygwin window. + +@kindex show interactive-mode +@item show interactive-mode +Displays whether the debugger is operating in interactive mode or not. +@end table + @node Extending GDB @chapter Extending @value{GDBN} @cindex extending GDB diff --git a/gdb/top.c b/gdb/top.c index b98fa9a..1b4aa9d 100644 --- a/gdb/top.c +++ b/gdb/top.c @@ -1318,12 +1318,38 @@ quit_force (char *args, int from_tty) exit (exit_code); } +/* If OFF, the debugger will run in non-interactive mode, which means + that it will automatically select the default answer to all the + queries made to the user. If ON, gdb will wait for the user to + answer all queries. If AUTO, gdb will determine whether to run + in interactive mode or not depending on whether stdin is a terminal + or not. */ +static enum auto_boolean interactive_mode = AUTO_BOOLEAN_AUTO; + +/* Implement the "show interactive-mode" option. */ + +static void +show_interactive_mode (struct ui_file *file, int from_tty, + struct cmd_list_element *c, + const char *value) +{ + if (interactive_mode == AUTO_BOOLEAN_AUTO) + fprintf_filtered (file, "\ +Debugger's interactive mode is %s (currently %s).\n", + value, input_from_terminal_p () ? "on" : "off"); + else + fprintf_filtered (file, "Debugger's interactive mode is %s.\n", value); +} + /* Returns whether GDB is running on a terminal and input is currently coming from that terminal. */ int input_from_terminal_p (void) { + if (interactive_mode != AUTO_BOOLEAN_AUTO) + return interactive_mode == AUTO_BOOLEAN_TRUE; + if (gdb_has_a_terminal () && instream == stdin) return 1; @@ -1655,6 +1681,18 @@ Use \"on\" to enable the notification, and \"off\" to disable it."), show_exec_done_display_p, &setlist, &showlist); + add_setshow_auto_boolean_cmd ("interactive-mode", class_support, + &interactive_mode, _("\ +Set whether GDB should run in interactive mode or not"), _("\ +Show whether GDB runs in interactive mode"), _("\ +If on, run in interactive mode and wait for the user to answer\n\ +all queries. If off, run in non-interactive mode and automatically\n\ +assume the default answer to all queries. If auto (the default),\n\ +determine which mode to use based on the standard input settings"), + NULL, + show_interactive_mode, + &setlist, &showlist); + add_setshow_filename_cmd ("data-directory", class_maintenance, &gdb_datadir, _("Set GDB's data directory."), _("Show GDB's data directory."), --H+4ONPRPur6+Ovig--