jingham added inline comments.

================
Comment at: lldb/source/Commands/CommandObjectFrame.cpp:880
     auto func =
-        RegularExpressionSP(new RegularExpression(m_options.m_function));
+        RegularExpressionSP(new 
RegularExpression(m_options.m_symbols.front()));
     StackFrameRecognizerManager::AddRecognizer(recognizer_sp, module, func);
----------------
mib wrote:
> jingham wrote:
> > mib wrote:
> > > jingham wrote:
> > > > labath wrote:
> > > > > mib wrote:
> > > > > > labath wrote:
> > > > > > > mib wrote:
> > > > > > > > labath wrote:
> > > > > > > > > Is there something which ensure that m_symbols contains at 
> > > > > > > > > least one element here? (i.e., that we do not silently drop 
> > > > > > > > > the extra symbols arguments)
> > > > > > > > Few lines above, we make sure the symbols list is not empty.
> > > > > > > Not empty is one thing, but what about the case when it contains 
> > > > > > > 2 or more elements (`frame recognizer add --name foo --name bar 
> > > > > > > --regex`)? Will that produce some kind of an error, or will it 
> > > > > > > just ignore the second regex ?
> > > > > > It takes only the first symbol and ignores the other ones.
> > > > > Hmm.. that doesn't sound very useful. I think that should be an error.
> > > > Just put --name and --regex in different option groups when you define 
> > > > the command.  Then the command machinery won't allow you to specify 
> > > > both at the same time (and the help will show they are mutually 
> > > > incompatible). 
> > > > 
> > > > I agree with Pavel, an error is what you want in that case.
> > > @jingham I think this is wrong because `--regex` is just a boolean flag, 
> > > not the actual regular expression.
> > > 
> > > When this flag is enabled,  the overloading for `AddRecognizer`that is 
> > > called is the one that holds `RegularExpressionSP`s instead of the 
> > > overloading with a `ConstString` and `llvm::ArrayRef<ConstString>` ...
> > > 
> > > I'll add the check above to make sure `m_symbols` has only 1 entry when 
> > > the `--regex` flag is enable and return an error otherwise.
> > Oh, that's unfortunate.  It's weird that you can pass --name twice w/o the 
> > --regex but only once with.  But it's probably too late to change that now.
> > 
> > You solution sounds fine, though you should also amend the help string for 
> > --name to say "can be specified more than once except if --regex is 
> > provided" or this will be really confusing.  BTW, if there any reason why 
> > this can't take more than one regex?  I allowed only one for breakpoints 
> > and things like the "no step into source regex" on the theory that you can 
> > always just use "|" to concatenate two regex's.  That is in the end 
> > probably more efficient but for maintenance it's easier if your regex's 
> > don't get too long, so I have wished on occasion since then that I had 
> > allowed more than one regex for these options.
> > 
> > Note, the reason I don't like "--regex" as a flag is it makes the job of 
> > providing completions for --name harder.  Note, it's still possible if the 
> > user typed:
> > 
> > (lldb) whatever --regex --name A<TAB>
> > 
> > because the option completion for --name can actually look at the whole 
> > command line.  For instance, 
> > 
> > --shlib libBar.dylib --name Foo<TAB>
> > 
> > will limit the completions to names in libBar.  But that makes it trickier 
> > to do. 
> > 
> > For folks designing commands, IMO would be better to have --name <NAME> and 
> > --regex <REGEX> and not have the --regex be just a flag.
> I didn't know that completion could be restricted by other flags, this sounds 
> like a neat "optimization".
> 
> The issue with making the `--regex` as the actual regular expression is that 
> it will prevent us to distinguish the shared library regex from the symbol 
> regex.
> 
> I'm not against changing that behavior to have better completion and more 
> homogeneous commands but this would need to be done on a separate patch.
It's fine to do that as a separate patch, or leave it for later as your time 
dictates.  This feature doesn't demand it.

But you should document the current behavior in the option string for --name.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D76188/new/

https://reviews.llvm.org/D76188



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

Reply via email to