From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21723 invoked by alias); 13 Sep 2002 18:24:38 -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 21715 invoked from network); 13 Sep 2002 18:24:37 -0000 Received: from unknown (HELO localhost.redhat.com) (66.30.197.194) by sources.redhat.com with SMTP; 13 Sep 2002 18:24:37 -0000 Received: by localhost.redhat.com (Postfix, from userid 469) id A8C65106CC; Fri, 13 Sep 2002 14:22:44 -0400 (EDT) From: Elena Zannoni MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <15746.11507.688049.368955@localhost.redhat.com> Date: Fri, 13 Sep 2002 11:24:00 -0000 To: gdb@sources.redhat.com Subject: Re: Expect fails to recognize regexp In-Reply-To: <20020913200643.I1574@cygbert.vinschen.de> References: <20020913200643.I1574@cygbert.vinschen.de> X-SW-Source: 2002-09/txt/msg00159.txt.bz2 Add exp_internal 1 and exp_internal 0 around the particualar send/expect interaction, then you will exacly see in the output what expect think it matched. That's the only way I know of making sense of stuff like this. Elena Corinna Vinschen writes: > Hi, > > I'm trying to fix an error in the testsuite lib but I'm stuck at one > point. For some mysterious reason, I can't get a regexp right. > > Ok, the original preoblem I'm trying to solve is, that in lib/gdb.exp, > proc rerun_to_main() the procedure doesn't take into account, that > some targets never actually exit, but instead are programatically > trapped in some _exit function. > > This means that rerun_to_main() must be able to manage the situation > that gdb not just reruns, but first asks > > The program being debugged has been started already. > Start it from the beginning? (y or n) > > What I did was adding the following patch to gdb.exp: > > Index: lib/gdb.exp > =================================================================== > RCS file: /cvs/src/src/gdb/testsuite/lib/gdb.exp,v > retrieving revision 1.26 > diff -u -p -r1.26 gdb.exp > --- lib/gdb.exp 13 Sep 2002 17:20:11 -0000 1.26 > +++ lib/gdb.exp 13 Sep 2002 17:59:35 -0000 > @@ -1685,6 +1685,10 @@ proc rerun_to_main {} { > } else { > send_gdb "run\n" > gdb_expect { > + -re "The program .* has been started already.*y or n. $" { > + send_gdb "y\n" > + exp_continue > + } > -re "Starting program.*$gdb_prompt $"\ > {pass "rerun to main" ; return 0} > -re "$gdb_prompt $"\ > > but it doesn't work! I tried various... uhm... variations of the > expression, include simple stuff as > > -re "The program.*" > > or moving the -re back and forth in the gdb_expect expression but to > no avail. The result in gdb.log was always the same: > > (gdb) PASS: gdb.base/ena-dis-br.exp: continue until exit at no stop > run^M > The program being debugged has been started already.^M > Start it from the beginning? (y or n) FAIL: gdb.base/ena-dis-br.exp: > (timeout) rerun to main > > As you can see, there's no 'y' in the log so expect didn't recognize > the expression at all. > > Does anybody have an idea what's going on here? > > Corinna > > -- > Corinna Vinschen > Cygwin Developer > Red Hat, Inc. > mailto:vinschen@redhat.com