> On Jan 15, 2015, at 5:01 PM, Zachary Turner <ztur...@google.com> wrote:
> 
> Btw, I'm still a little uncomfortable that not having unwind/ symbol info at 
> any point no matter how deep in a function call chain, has the possibility to 
> mess up a step over. In my original example, i had symbols for main but not 
> printf. Is that not sufficient to step over a call to printf? It should be 
> able to know from that a) the bounds of main(), b) the pc corresponding to 
> the next line of source after printf, and c) the value of esp. Aren't those 3 
> pieces of information enough to step over any line of source, regardless of 
> whether you have unwind information for the code inside the function you're 
> stepping over?

The stepping machinery is not architecture specific, nor should it be.  It's 
the unwinder's job to get the stack frames right on a per-architecture basis, 
and then the stepping machinery is the consumer of the unwind info.  The 
stepping machinery also needs to know things like "how to I get back out of a 
function that I stepped into" which again rely on the unwind being accurate.

Jim


> On Thu, Jan 15, 2015 at 4:36 PM <jing...@apple.com> wrote:
> 
> > On Jan 15, 2015, at 4:18 PM, Zachary Turner <ztur...@google.com> wrote:
> >
> > Which is unfortunate, because it seems to be needed even for basic stepping 
> > to work, like step over.  Originally I was just trying to implement 
> > stepping, and that's how I ran into this issue.  So that brings me to a 
> > related question.  Why is step over as complicated as it is?  It seems to 
> > me like step over can be implemented by disassembling 1 opcode, adding the 
> > size of the opcode to the current pc, and having the ThreadPlan::ShouldStop 
> > always return false unless the pc is equal to old_pc + size_of_opcode.
> >
> 
> You are describing "thread step-inst".  That should pretty much always work 
> regardless of unwinder, etc.
> 
> Source step over, as Jason said, is much more complicated.
> 
> Jim


_______________________________________________
lldb-dev mailing list
lldb-dev@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to