This is the mail archive of the gdb-prs@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: gdb/671: Changing GDB/MI spec say the should be a termination


The following reply was made to PR gdb/671; it has been noted by GNATS.

From: Daniel Jacobowitz <drow@mvista.com>
To: Alain Magloire <alain@qnx.com>
Cc: gdb-gnats@sources.redhat.com
Subject: Re: gdb/671: Changing GDB/MI spec say the should be a termination
Date: Mon, 26 Aug 2002 23:15:18 -0400

 On Mon, Aug 26, 2002 at 11:10:20PM -0400, Alain Magloire wrote:
 > > 
 > > On Mon, Aug 26, 2002 at 07:38:00PM -0000, Alain Magloire wrote:
 > > >  > > 1:int main() {
 > > >  > > 2:      int x;
 > > >  > > 3:      pthread_create(NULL, NULL, routine, NULL);
 > > >  > > 4:      printf("Hello world\n");
 > > >  > > 5:      sleep(200000); // Or a very time consuming function called.
 > > >  > > 6:      printf("After the long wait\n");
 > > >  > > 7:      return 0;
 > > >  > > 8:}
 > > >  > > 
 > > >  > > gdb/mi will issue things like:
 > > >  > > (gdb)
 > > >  > > -break-insert file.c:6
 > > >  > > ^done,bkpt={...}
 > > >  > 
 > > >  > Is there a ``run/continue'' missing in here somewhere?
 > > >  
 > > >  Yes.
 > > >  
 > > >  > 
 > > >  > > ~"[New Thread 1024 (LWP 30497)]\n"
 > > >  > > ~"[Switching to Thread 1024 (LWP 30497)]\n"
 > > >  > > .... wait for the sleep ....
 > > >  > > *stopped,reason=...
 > > >  > > (gdb)
 > > >  > > 
 > > >  > > You do not have the "(gdb)" comming right away.
 > > >  > > 
 > > >  > >         OUTPUT ==> (OUT-OF-BAND-RECORD)* [RESULT-RECORD] "(gdb)"nl
 > > >  > > 
 > > >  > > I read the definition like you can accumulate outputs and deal with them only
 > > >  > > when encounter "(gdb)"  which is true unless you want to wait for the sleep() to
 > > >  > > finish.  In practice we can consider Out-of-band completely async and should be
 > > >  > > process right away.  It was not clear at first sight, IMHO.
 > > >  > 
 > > >  > Is this an async target (target remote-async)?  No current native target 
 > > >  > is async.  This makes correctly implemeting out-of-band messages very 
 > > >  > difficult.
 > > >  
 > > >  This goes for any streams(log/target/console).
 > > >  
 > > >  Changing the syntax to something like:
 > > >  
 > > >      OUTPUT ==> (OUT-OF-BAND-RECORD)* | [RESULT-RECORD] "(gdb)"nl
 > > >                                     ^^^^
 > > >  
 > > >  Is probably more accurate.  GDB(console-stream) will send oob's like
 > > >  creating new thread etc ... at any time.
 > > >  
 > > >  But you say "no current native" is asyn, which seems to say that remote
 > > >  is.  On GNU/Linux gdb-5.2.1  using gdbserver target streams are not asyn
 > > >  i.e properly MI wrap either.
 > > 
 > > No, "target remote-async" is.  Gdbserver does not implement that (yet,
 > > or until it seems like a good idea).
 > > 
 > 
 > Sorry, I did not follow your reply.
 > I do not know, what "target remote-async" is.  I guess you mean that it is the
 > mechanism/protocol that can wrap target-stream output in gdb/mi.
 > That would be very nice.
 > 
 > Keith Seizt was pointing out that the problem is not trivial and for
 > applications that need terminal(or X), say "vi", it is a problem.
 > But having proper gdb/mi even if it's only work using "remote"(on localhost)
 > is good start. 
 
 I don't know anything about remote-async, but it is a separate protocol
 from the normal "remote".  Gdbserver does not implement it.  I don't
 know of any stubs that do...
 
 -- 
 Daniel Jacobowitz
 MontaVista Software                         Debian GNU/Linux Developer


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]