Excellent, I'm glad that worked for you!

Jim
 

On Mar 18, 2014, at 12:47 AM, Andrew MacPherson <andrew.m...@gmail.com> wrote:

> Hi Jim, just saw your checkin from yesterday and gave it a run here and 
> stepping is now working exactly as we were hoping for the couple of test 
> cases we had on this end. Looks great!
> 
> 
> On Mon, Mar 17, 2014 at 7:21 PM, Andrew MacPherson <andrew.m...@gmail.com> 
> wrote:
> That sounds great, thanks Jim.
> 
> 
> On Mon, Mar 17, 2014 at 7:01 PM, <jing...@apple.com> wrote:
> I've been working recently on making stepping treat line number 0 as an 
> "auto-continuation" of whatever it was doing previously.  So for instance if 
> you are doing "step over" line 54, and you end up in line 0 I remember that I 
> was at line 54, step through the line 0 code, then if I end up back in line 
> 54, continue stepping through it.  That's why I line line 0 being a real 
> line, I know positively that it is artificial compiler goo, not just "dunno" 
> code, and can take the appropriate actions.  I know there are a few places 
> where I haven't done this yet, like if "step out" steps out to code at line 
> number 0.  But all those instances are bugs and should be fixed in the 
> stepping machinery, not by obscuring what the code we've wandered our way 
> into is.
> 
> BTW, I was handling this in a somewhat ad-hoc way before, the point of 
> reworking the ShouldStopHere stuff that I did last week was to make a more 
> centralized place to handle this.  I'll work the line number 0 stuff over 
> there this week, and then see if you are still seeing cases where this code 
> leaks out, and if so, file a bug and we'll figure it out.
> 
> Jim
> 
> 
> On Mar 17, 2014, at 9:59 AM, Greg Clayton <gclay...@apple.com> wrote:
> 
> > Yes, we should fix our stepping to avoid these line number 0. I would avoid 
> > changing LineEntry::IsValid(), but possibly add another check like 
> > "IsValidSourceLocation()" that would return
> >
> > bool
> > LineEntry::IsValidSourceLocation() const
> > {
> >    return IsValid() && m_line != 0;
> > }
> >
> > We should let Jim comment on any stepping related changed.
> >
> > On Mar 15, 2014, at 1:40 AM, Andrew MacPherson <andrew.m...@gmail.com> 
> > wrote:
> >
> >> Ok, that makes sense, I should have provided more context.
> >>
> >> We use LLVM's DIBuilder to add debug info to our JITed KL language and 
> >> there are certain functions we provide which are internal and for which we 
> >> don't want to provide line info. We want these functions to show up named 
> >> in stack traces but would prefer to not have file and line info show up. 
> >> We have been passing 0 as the line number for these functions (DIBuilder's 
> >> createFunction() requires a line number) which makes them behave as we 
> >> want in gdb, however in LLDB they show up coming from our dummy internal 
> >> file name on line 0.
> >>
> >> This isn't a big deal but would be nice to fix, the one which prompted us 
> >> to look into this though was around stepping. In gdb these internal 
> >> functions are skipped by default because they have no source and line 
> >> info, whereas when stepping in LLDB (with the avoids-no-debug flags set) 
> >> stepping still hits these functions even though there's no source 
> >> available for them, which we'd like to avoid.
> >>
> >> Taking another look maybe the correct fix would be to modify 
> >> LineEntry::IsValid() to add a check for line != 0 too?
> >>
> >> Thanks,
> >> Andrew
> >>
> >>
> >> On Fri, Mar 14, 2014 at 7:29 PM, Greg Clayton <gclay...@apple.com> wrote:
> >> I agree with Jim in that it is nice to know when a compiler told us line 
> >> 0, versus "invalid info" where UINT32_MAX is the value. I would vote to 
> >> leave things as is unless you have a convincing argument otherwise.
> >>
> >>
> >> On Mar 14, 2014, at 11:21 AM, jing...@apple.com wrote:
> >>
> >>> lldb uses LLDB_INVALID_LINE_NUMBER to mean line number information is not 
> >>> available, and 0 to mean this is code that was generated by the compiler, 
> >>> but is artificial.  That's the way clang marks code (e.g. junk generated 
> >>> by ARC) that lldb will need to step through, or whatever, but should not 
> >>> show to the user.
> >>>
> >>> That's a useful distinction, and I'd like to maintain it.  What bad 
> >>> behavior are you seeing based on this?
> >>>
> >>> Jim
> >>>
> >>> On Mar 14, 2014, at 1:49 AM, Andrew MacPherson <andrew.m...@gmail.com> 
> >>> wrote:
> >>>
> >>>> gdb assumes that any debug entry with a line number of 0 means that line 
> >>>> number information is not available (see struct symtab_and_line here):
> >>>>
> >>>> http://www.opensource.apple.com/source/gdb/gdb-967/src/gdb/symtab.h
> >>>>
> >>>> lldb currently uses UINT32_MAX for the same thing.
> >>>>
> >>>> I suggest changing lldb to use the same value as gdb so that it's 
> >>>> possible to mark line entry data as invalid in the same way for both 
> >>>> debuggers.
> >>>>
> >>>> Thanks,
> >>>> Andrew
> >>>> <invalid-line-number.patch>_______________________________________________
> >>>> lldb-dev mailing list
> >>>> lldb-dev@cs.uiuc.edu
> >>>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
> >>>
> >>> _______________________________________________
> >>> lldb-dev mailing list
> >>> lldb-dev@cs.uiuc.edu
> >>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
> >>
> >>
> >
> 
> 
> 

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

Reply via email to