This is the mail archive of the gdb-patches@sourceware.org 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: RFC: MI output during program execution


 > I've started a merge on current CVS (for some reason gdb-413 seemed to
 > include everything except the GDB source).  Getting MI output during
 > program execution seems to be closely related to making GDB asynchronous.
 > I couldn't attempt such a task on my own but, using the Apple code as a
 > prototype, it doesn't look too difficult.  When I have something working
 > perhaps I could put it on a branch.

I now have something that works for GNU/Linux (probably under limited
conditions).  With MI it now picks up mi_exec_async_cli_cmd_continuation to
print the *stopped record, even with CLI commands like "run":

(gdb)
-break-insert main
^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x080484c5",func="main",file="myprog.c",line="55",times="0"}
(gdb)
-interpreter-exec console run
Switching to interpreter "console".
(gdb) Starting program: /home/nickrob/myprog
^running
(gdb)
*stopped,reason="breakpoint-hit",bkptno="1",thread-id="0",frame={addr="0x080484c5",func="main",args=[{name="argc",value="1"},{name="argv",value="0xfee72c74"}],file="myprog.c",fullname="/home/nickrob/myprog.c",line="55"}
(gdb)
-exec-next
^running
(gdb)
*stopped,reason="end-stepping-range",thread-id="0",frame={addr="0x080484d7",func="main",args=[{name="argc",value="1"},{name="argv",value="0xfee72c74"}],file="myprog.c",fullname="/home/nickrob/myprog.c",line="56"}

Such asynchronous behaviour should also help with event notification which
Apple's code also has, but which I have not tried to merge for the moment.

I've changed the files:

cli-interp.c         infcmd.c	          mi-interp.c
defs.h		     inf-loop.c	 	  mi-main.c  
event-loop.c	     inf-ptrace.c	  mi-main.h  
event-loop.h	     infrun.c	 	  target.c   
event-top.c	     interps.c	 	  target.h   
event-top.h	     interps.h	 	  top.c	   
exec.c		     linux-nat.c	  tui-hooks.c
i386-linux-nat.c     linux-thread-db.c	  wrapper.h  
inf-child.c	     Makefile.in      

and added four new ones:

async-nat-inferior.c
async-nat-inferior.h
async-nat-sigthread.c
async-nat-sigthread.h

derived from their macosx-*-*.* counterparts.

Some files had to be changed e.g event-loop.c, event-top.c, inf-loop.c.
Others should probably have been changed elsewhere with different target
methods e.g i386-linux-nat.c linux-thread-db.c.  This is just a starting
point.

I attach the new files and a set of diffs against HEAD from about 20:00 NZST
(+12 GMT) Sept 19 2005, for anyone who might like to test the functionality.
If I am given approval to commit these changes to a branch then I will create
ChangeLog entries (attributed to Apple).

I presume there is more freedom to committing on a non-release branch.  What
are the rules?

Nick

Attachment: async.tgz
Description: asynchronous GDB


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