From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20297 invoked by alias); 19 Apr 2012 19:25:27 -0000 Received: (qmail 20272 invoked by uid 22791); 19 Apr 2012 19:25:25 -0000 X-SWARE-Spam-Status: No, hits=-2.2 required=5.0 tests=AWL,BAYES_00,KHOP_THREADED,RCVD_IN_DNSWL_NONE,RCVD_IN_HOSTKARMA_NO,SPF_SOFTFAIL X-Spam-Check-By: sourceware.org Received: from mtaout21.012.net.il (HELO mtaout21.012.net.il) (80.179.55.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 19 Apr 2012 19:25:06 +0000 Received: from conversion-daemon.a-mtaout21.012.net.il by a-mtaout21.012.net.il (HyperSendmail v2007.08) id <0M2Q00500R0N3W00@a-mtaout21.012.net.il> for gdb@sourceware.org; Thu, 19 Apr 2012 22:24:55 +0300 (IDT) Received: from HOME-C4E4A596F7 ([84.228.105.225]) by a-mtaout21.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0M2Q005HKR9G4220@a-mtaout21.012.net.il>; Thu, 19 Apr 2012 22:24:53 +0300 (IDT) Date: Thu, 19 Apr 2012 19:25:00 -0000 From: Eli Zaretskii Subject: Re: GDB/MI and ">" prompts In-reply-to: <20120419185329.GO25623@adacore.com> To: Joel Brobecker Cc: gdb@sourceware.org Reply-to: Eli Zaretskii Message-id: <83mx67ikxm.fsf@gnu.org> References: <83vckviv3b.fsf@gnu.org> <20120419154853.GM25623@adacore.com> <83sjfzitxx.fsf@gnu.org> <83r4vjitnj.fsf@gnu.org> <20120419185329.GO25623@adacore.com> X-IsSubscribed: yes Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2012-04/txt/msg00163.txt.bz2 > Date: Thu, 19 Apr 2012 11:53:29 -0700 > From: Joel Brobecker > Cc: gdb@sourceware.org > > > With this knowhow in hand, my next question is about GDB/MI behavior > > when it is connected to a tty device. Typing > > > > -interpreter-exec console "commands" > > > > from the console for some reason disables the ">" prompts for the > > breakpoint commands. If stdin is NOT a tty, those prompts _are_ > > output. Why the difference? > > I don't know if it is a feature or a bug. I would lean towards a bug. > GDB treats all prompts the same, and asks the current interpreter > whether to display the prompt or not. See gdb_readline_wrapper, Do we really use readline when MI is the interpreter? > which calls display_gdb_prompt, which does: > > /* Each interpreter has its own rules on displaying the command > prompt. */ > if (!current_interp_display_prompt_p ()) > return; > > Although we are executing the command using the console interpreter, > the current interpreter remains the GDB/MI interpreter: > > (top-gdb) p *current_interpreter > $11 = {name = 0x19b8ce0 "mi", next = 0x19b9ec0, data = 0x1a32390, > inited = 1, procs = 0x94d480, quiet_p = 0} > > And thus, current_interp_display_prompt_p returns false. > > Just to see what would happen if the GDB/MI interpreter was to > display prompts, I tweaked mi_interpreter_prompt_p to always > return 1, and here is what I get: > > -interpreter-exec console "commands 1" > ~"Type commands for breakpoint(s) 1, one per line.\nEnd with a line saying just \"end\".\n" > ~">" > print 1 > ~">" > print 2 > ~">" > end > > The ~ lines are lines that would be printed verbatim on the debugger > console, so I believe the user experience would be similar to what > we get in non-MI mode. Right. But you don't need to hack the code to see this in action, just "set interactive-mode off" and you will see it. The crux of my question was why non-interactive mode does display a prompt while the interactive one doesn't. > But of course, things are not as simple as this, since I do not think > we want the GDB/MI to always print the prompt. Does GDB/MI have a prompt? The ">" thing is coming from the CLI, not from MI. Or did you mean other prompts in other situations (and if so, which ones)? > The other thing that occured to me was that, perhaps, we should instead > be switching the interpreter while executing the console command, How would that help?