How does GDB/MI give the current frame

Andrew Cagney cagney@gnu.org
Mon Jul 26 21:31:00 GMT 2004


>  > > For what it's worth, at Apple we've done what Andrew is proposing.  Our  
>  > > method spits out a "MI_HOOK_RESULT" notification on the ^done result  
>  > > whenever the console command entered by the user has changed the state  
>  > > in an important way.  e.g.
>  > > 
>  > > (gdb)
>  > > -interpreter-exec console-quoted up
>  > > ~"#2  0x000321f4 in gdb_main (args=0xbffff620) at  
>  > > ../../gdb/src/gdb/main.c:851\n"
>  > > ~"851\t  catch_errors (captured_main, args, \"\", RETURN_MASK_ALL);\n"
>  > > ^done,MI_HOOK_RESULT=[HOOK_TYPE="frame_changed",frame="2"],time= 
>  > > {wallclock="0.00620",user="0.00323",system="0.00283",start="1089921236.3 
>  > > 59009",end="1089921236.365212"}
>  > > (gdb)
>  > > 
>  > 
>  > But what Andrew is proposing is to use the async-output already part of MI to notify
>  > the UI of changes.
> 
> Wouldn't the output from "up" would be synchronous? I thought asynchronous output
> only occurs when the inferior is actually running.

Moving forward, that won't be a good assumption.  Of the top of my head:

- part of the inferior is still running

- something else also connected to gdb asks gdb to do an "up" (see 
moto's question about flushing gdb's internal state when the system is 
stopped and hence shouldn't need a flush.)

Andrew




More information about the Gdb mailing list