Are glob characters legal file characters on any systems? If so we can't do the 
auto detect where we override the meaning of -f. If not, then we can. We could 
add a --glob option that goes along with the -f option if glob characters are 
valid file system characters.

There are a few breakpoint options that aren't available via the lldb::SB API 
layer. Not skipping the prologue for breakpoints by name and regex is one of 
them.

It would be nice to follow other examples where we make a options class that 
has nice defaults and get sent to each breakpoint kind.

The current API is:

  lldb::SBBreakpoint BreakpointCreateByName(const char *symbol_name,
                                            const char *module_name = nullptr);

  // This version uses name_type_mask = eFunctionNameTypeAuto
  lldb::SBBreakpoint
  BreakpointCreateByName(const char *symbol_name,
                         const SBFileSpecList &module_list,
                         const SBFileSpecList &comp_unit_list);

With a breakpoint options class we would add:

  lldb::SBBreakpoint
  BreakpointCreateByName(const char *symbol_name,
                         lldb::SBBreakpointOptions &options);


Then we can make SBBreakpointOptions be able to set any kinds of filters we 
want.

The missing things that come to mind are:
- don't skip prologue
- don't set inlined breakpoints (concrete only) (this is missing in the command 
line interface as well)
- limiting to certain files or shared libraries (only available on some 
SBTarget::BreakpointCreateXXX() functions)
- thread specific settings
- hit count
- skip count
- setting condition on breakpoint right away instead of making another API call

> On Oct 25, 2017, at 6:15 AM, Don Hinton via lldb-dev 
> <lldb-dev@lists.llvm.org> wrote:
> 
> I'd also like to include the path in the pattern, e.g., -f "*/clang/*", which 
> would cut the number of files examined by about half for my use case.
> 
> 
> 
> On Tue, Oct 24, 2017 at 7:24 PM, Zachary Turner <ztur...@google.com 
> <mailto:ztur...@google.com>> wrote:
> Pass a pattern to the -f option.  
> 
> On Tue, Oct 24, 2017 at 7:18 PM Don Hinton <hinto...@gmail.com 
> <mailto:hinto...@gmail.com>> wrote:
> Do you mean just pass a pattern to the -f option or FileSpec?
> 
> On Tue, Oct 24, 2017 at 6:50 PM, Zachary Turner <ztur...@google.com 
> <mailto:ztur...@google.com>> wrote:
> It might be worth brainstorming if there’s ways to do this that are both 
> intuitive and don’t require more options.  As a command line user, I really 
> value my keystrokes.  
> 
> One idea would be to use a syntax that matches that of the ‘-name’ option to 
> the standard ‘find’ utility.  This way filename pattern matching would work 
> in a way familiar to almost everyone, no sb api options would need to be 
> added.
> 
> 
> 
> On Mon, Oct 23, 2017 at 6:25 PM Jim Ingham via lldb-dev 
> <lldb-dev@lists.llvm.org <mailto:lldb-dev@lists.llvm.org>> wrote:
> Yeah, that would be easy to implement from the command line, maybe add a 
> --file-is-regex flag or something.
> 
> From the SB API it would be better to have something like:
> 
> SBFileList SBTarget.GetFileListMatchingRegex("regex")
> 
> Please file an enhancement request for these of hack'em in if you're so 
> motivated.
> 
> Jim
> 
> 
> > On Oct 23, 2017, at 6:13 PM, Don Hinton <hinto...@gmail.com 
> > <mailto:hinto...@gmail.com>> wrote:
> >
> > Ah, great, thanks.  I just figured the default was the same for both.
> >
> > Just wish I could use a regex for the filename as well, which would cut 
> > down the number of files about about half.
> >
> > thanks again...
> > don
> >
> > On Mon, Oct 23, 2017 at 6:02 PM, Jim Ingham <jing...@apple.com 
> > <mailto:jing...@apple.com>> wrote:
> > Just pass an invalid FileSpec for the source file spec, like:
> >
> > lldb.target.BreakpointCreateBySourceRegex("printf", lldb.SBFileSpec())
> >
> > and it acts the same way as the --all-files option.  That was pretty 
> > non-obvious, I'll update the docs.
> >
> > Actually, the thing you CAN'T do is get the command line behavior where 
> > lldb uses the "default file" i.e. when you run "break set -p" but don't 
> > supply a file or the --all-files option.  That seemed to me less useful for 
> > a programming interface since the default file is history dependent (it's 
> > the file with "main" in it before you run, then it's where you last set a 
> > breakpoint, or where you last stopped, etc.)  If you needed this behavior 
> > it would be better to have the target vend the default file, though right 
> > now that's really only maintained by the breakpoint command...
> >
> > Jim
> >
> >
> > > On Oct 23, 2017, at 5:31 PM, Don Hinton via lldb-dev 
> > > <lldb-dev@lists.llvm.org <mailto:lldb-dev@lists.llvm.org>> wrote:
> > >
> > > The only way I've been able to do it is by using the CommandInterpreter, 
> > > i.e.,
> > >
> > >   res = lldb.SBCommandReturnObject()
> > >   lldb.debugger.GetCommandInterpreter().HandleCommand('breakpoint set -p 
> > > "diag::%s" --all-files -N %s' % (name, name), res);
> > >   lldb.debugger.GetCommandInterpreter().HandleCommand('breakpoint disable 
> > > %s' % name, res);
> > >
> > > Is this the best way to do it?  Can't seem to figure out how to use 
> > > SBTarget.BreakpointCreateBySourceRegex() for all files.
> > >
> > > thanks...
> > > don
> > > _______________________________________________
> > > lldb-dev mailing list
> > > lldb-dev@lists.llvm.org <mailto:lldb-dev@lists.llvm.org>
> > > http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev 
> > > <http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev>
> >
> >
> 
> _______________________________________________
> lldb-dev mailing list
> lldb-dev@lists.llvm.org <mailto:lldb-dev@lists.llvm.org>
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev 
> <http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev>
> 
> 
> _______________________________________________
> lldb-dev mailing list
> lldb-dev@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

_______________________________________________
lldb-dev mailing list
lldb-dev@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

Reply via email to