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
> <[email protected]> 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 <[email protected]
> <mailto:[email protected]>> wrote:
> Pass a pattern to the -f option.
>
> On Tue, Oct 24, 2017 at 7:18 PM Don Hinton <[email protected]
> <mailto:[email protected]>> 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 <[email protected]
> <mailto:[email protected]>> 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
> <[email protected] <mailto:[email protected]>> 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 <[email protected]
> > <mailto:[email protected]>> 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 <[email protected]
> > <mailto:[email protected]>> 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
> > > <[email protected] <mailto:[email protected]>> 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
> > > [email protected] <mailto:[email protected]>
> > > http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
> > > <http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev>
> >
> >
>
> _______________________________________________
> lldb-dev mailing list
> [email protected] <mailto:[email protected]>
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
> <http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev>
>
>
> _______________________________________________
> lldb-dev mailing list
> [email protected]
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
_______________________________________________
lldb-dev mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev