From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25051 invoked by alias); 31 Jan 2005 21:21:36 -0000 Mailing-List: contact gdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sources.redhat.com Received: (qmail 24990 invoked from network); 31 Jan 2005 21:21:27 -0000 Received: from unknown (HELO nevyn.them.org) (66.93.172.17) by sourceware.org with SMTP; 31 Jan 2005 21:21:27 -0000 Received: from drow by nevyn.them.org with local (Exim 4.43 #1 (Debian)) id 1Cviz5-0002gn-Et for ; Mon, 31 Jan 2005 16:21:23 -0500 Date: Mon, 31 Jan 2005 21:21:00 -0000 From: Daniel Jacobowitz To: GDB Subject: Re: How do I get regexp from expect at gdb_expect? Message-ID: <20050131212122.GA10092@nevyn.them.org> Mail-Followup-To: GDB References: <20050129025743.GA4053@white> <200501290309.j0T39F1i020834@tully.CS.Berkeley.EDU> <20050131150652.GA7955@white> <20050131162609.GA19459@nevyn.them.org> <20050131211042.GA8411@white> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20050131211042.GA8411@white> User-Agent: Mutt/1.5.5.1+cvs20040105i X-SW-Source: 2005-01/txt/msg00168.txt.bz2 On Mon, Jan 31, 2005 at 04:10:42PM -0500, Bob Rossi wrote: > > You've left out your pattern, and the context. I recommend using > > "exp_internal 1" to debug this sort of problem; that will show you what > > expect is doing. > > OK, here's an example of the problem, here's the output for 2 > consecutive commands given to GDB. > > First, 200-break-delete is sent. The '200-break-delete' is in the > 'expect_out(buffer)' output, which leads me to believe the testsuite is > echoing the input command. This in itself is probably wrong. However, the > '200-break-delete' is not in the matched regular expression > 'expect_out(0,string)'. expect: does "200-break-delete\r\n200^done\r\n(gdb) \r\n" (spawn_id exp11) match regular expression "\*\*\* DOSEXIT code.*"? no "([\r\n]*((\^done)[\r\n]+[(]gdb[)] \r\n[ ]*$))"? yes It's not in your $expect_out(0,string) because it didn't match your first parenthesized bit. It's in expect_out(buffer) at this point. > The next command, '200-break-list' is in both the 'expect_out(buffer)' > and in the 'expect_out(0,string)'. This leads me to believe that there > is something wrong with the regular expression matching. It can match > things that it shouldn't, which could mask problems. > > I don't really understand what you are saying about 'GDB is echoing > commands'. I do understand that when you are at the terminal running > GDB, GDB allows the terminal to 'echo' the char's typed. However, if you > fork/exec GDB, and send it a command, it will not 'echo' the data back > to your process. Isn't this the way Expect works? Expect works on a terminal. It's not instrumenting GDB to find out what GDB is writing; it's accepting whatever input comes to its side of the terminal. Which includes things echoed by the terminal. In readline mode GDB turns off echo and provides the echo manually; in MI mode, it does not touch the terminal, which echoes by default. It's just your patterns that are producing a difference. -- Daniel Jacobowitz