Re: [PATCH] -stack-info-frames

Jason Molenda
2005-06-19T21:55:09Z

On Sun, Jun 19, 2005 at 10:49:29AM +1200, Nick Roberts wrote:

> > (gdb)
> > -interpreter-exec console up
> > ~"#1 0xb7d621ae in poll () from /lib/tls/i686/cmov/libc.so.6\n"
> > ^done
> >

> Yes. The same is true for the commands that control execution:
>

> (gdb)
> -interpreter-exec console next
> ~"50\t int n1=7, n2=8, n3=9;\n"
> ^done
> (gdb)
>
> doesn't give the frontend any information.

For what it's worth, here's what these look like with the Apple gdb:

86-interpreter-exec console-quoted "up"
(gdb)
~"#1 0x0003eaf0 in -[SKTGraphicView createGraphicOfClass:withEvent:] (self=0x341380, _cmd=0x3411c0, theClass=0xb2014, theEvent=0x3afc90) at /Developer/Examples/AppKit/Sketch/SKTGraphicView.m:345\n"
~"345\t _creatingGraphic = [[theClass allocWithZone:[document zone]] init];\n"
86^done,MI_HOOK_RESULT=[HOOK_TYPE="frame_changed",frame="1"]

In the case of a 'next',

78-interpreter-exec console-quoted "next"
(gdb)
^stepping
~"Current language: auto; currently objective-c\n"
78^running
78*stopped,reason="end-stepping-range",thread-id="1"

These, and a handful of other notifications, are essential
if you have a GUI with a "gdb console" and you want to allow
the user to change program state in the console.

You'll notice that we use "console-quoted" for these. We keep
the meaning of "console" to actually mean console and have a
separate interpreter for the MI-quoted console output. We also
have the increidbly useful ability to switch the current
interpreter on the fly. e.g.

(gdb) b main
Breakpoint 1 at 0x2d04: file a.c, line 3.
(gdb) r
Starting program: /private/tmp/a.out
Reading symbols for shared libraries . done

Breakpoint 1, main () at a.c:3
3 puts ("");
(gdb) set interpreter mi
-stack-select-frame 0
^done
(gdb)
set interpreter console
&"set interpreter console\n"
Switching to interpreter "console".
^done
(gdb)
fr 0
#0 main () at a.c:3
3 puts ("");
(gdb)

So when we're working on an MI problem, we can navigate to the
area of interest via console, then switch to an MI interpreter
to work the problem.

> > Meanwhile, we don't have this ability. So maybe we do need
> > -stack-info-frame, without an argument.
>
> Yes, unless Apple's proposed merge will provide the necessary information.

Yeah, I would agree with Daniel that you shouldn't wait. We're working
on the latest FSF -> Apple merge right now. That will take a while
to get all the bugs shaken out, but even when it's finished we'll have
accomplished nothing for the desirable Apple -> FSF contributions --
it just sets the stage to make those easier to do.

J