Re: [RFC] breakpoints and function prologues...

Michael Snyder
2002-08-22T22:31:54Z

Daniel Jacobowitz wrote:
>
> On Thu, Aug 15, 2002 at 01:57:13AM -0400, Andrew Cagney wrote:
> > >I agree with Jim here. I think most folks are actually surprised to find
> > >that if they break on the "{" beginning a function (or indeed anywhere
> > >before the first executable line of code) then their backtrace will not be
> > >correct. Understanding why this is so requires you to "pay attention to
> > >the man behind the curtain", and that we breaks the illusion that source
> > >code maps straight-forwardly onto the running program. Where this extra
> > >knowledge is helpful (like when debugging optimized code) it is fine to
> > >require folks to have it. But here, where it really doesn't do any good,
> > >I think it is just confusing. And, of course, it causes big heartburn for
> > >GUIs the varobj code, as I said earlier.
> > >
> > >I doubt that "{" breaks on the prologue is a crucial feature of gdb, and
> > >given that there are other ways to do this, I don't think it is really
> > >worth supporting...
> >
> > Michael is right here. If a CLI user sets a breakpoint on a line (with
> > code) then that user clearly wants the breakpoint set on that line.
>
> Sure, if the user knows there's code there. I don't think most of our
> users would understand that there is code on the "{", or what it is
> for -

I suspect that this is a result of a changing user base.
There are more and more users who don't know a lot about
how things work "under the hood".

> and I don't think that breaking by line number should break on
> code inserted by the compiler rather than the user.

The question is, is there a strong reason to change a behavior
that has been consistent for a very long time (even if undocumented).
Even if the ability to debug the prologue is un-important for most
users, it is important to some, and those users (GCC developers,
for instance) may be quite accustomed to the current behavior.
I am, for instance...

> So I have to agree with Jim (both Jims, I think?).
>
> > If an architecture can't unwind the frame for that breakpoint address
> > then that is a bug in the architecture and/or GDB. The main reason the
> > average prologue analyzer doesn't handle breakpoints in the prologue is,
> > I think, more a factor of not being tested then of being ``hard''.
>
> Most of our ports don't support it, however.

Most of mine do.