[Lldb-commits] [PATCH] Adds the ability for Command options to be validated at runtime.

jingham at apple.com jingham at apple.com
Thu Jul 3 12:42:56 PDT 2014


Excellent.

Jim

> On Jul 3, 2014, at 12:41 PM, Zachary Turner <zturner at google.com> wrote:
> 
> Yea, in this CL I wasn't yet sure what would be the best argument to have the method take, so I just had it take nothing.  You caught in my follow-up CL that I used CommandInterpreter though, so I'll make sure to change it to ExecutionContext before pushing it.
> 
> 
> On Thu, Jul 3, 2014 at 10:43 AM, <jingham at apple.com> wrote:
> 
> > On Jul 3, 2014, at 10:41 AM, Greg Clayton <gclayton at apple.com> wrote:
> >
> > Looks fine. One question:
> >
> > In the definition of the OptionValidator:
> >
> >    struct OptionValidator
> >    {
> >        virtual ~OptionValidator() { }
> >        virtual bool IsValid() const = 0;
> >        virtual const char * ValidConditionString() const = 0;
> >    };
> >
> > Should the IsValid() and ValidConditionString() condition string take a "CommandInterpreter &command_interpreter" as an argument? This would allow us to get to the current execution contents (selected target/process/thread/frame), mainly so we can get the lldb_private::Target so we can get the platform from it so we can correctly make the determination if the option should be valid or not for the current context.
> 
> I think rather that they should take an ExecutionContext.  You can't depend on the command interpreter, since the selected target in the command interpreter might be TargetA, but we are executing the breakpoint action commands for a breakpoint hit on TargetB.  But I assume Zachary just hadn't gotten to this yet.
> 
> Jim
> 
> 
> >
> > Greg
> >
> >> On Jul 3, 2014, at 12:33 AM, Zachary Turner <zturner at google.com> wrote:
> >>
> >> This patch adds the notion of an OptionValidator to the OptionDefinition.  The purpose of the OptionValidator is to determine, based on some arbitrary set of conditions, whether or not a command option is valid for a given debugger state.  An example of this might be to selectively disable or enable certain command options that don't apply to a particular platform.
> >>
> >> This patch contains no functional change, and does not actually make use of an OptionValidator for any purpose yet.  It involves alot of code churn, however, so is submitted independently so as not to muddy up the subsequent change which actually begins making use of the validator.
> >>
> >> http://reviews.llvm.org/D4369
> >>
> >> Files:
> >> include/lldb/lldb-private-types.h
> >> source/Commands/CommandObjectArgs.cpp
> >> source/Commands/CommandObjectBreakpoint.cpp
> >> source/Commands/CommandObjectBreakpointCommand.cpp
> >> source/Commands/CommandObjectCommands.cpp
> >> source/Commands/CommandObjectDisassemble.cpp
> >> source/Commands/CommandObjectExpression.cpp
> >> source/Commands/CommandObjectFrame.cpp
> >> source/Commands/CommandObjectHelp.cpp
> >> source/Commands/CommandObjectLog.cpp
> >> source/Commands/CommandObjectMemory.cpp
> >> source/Commands/CommandObjectPlatform.cpp
> >> source/Commands/CommandObjectProcess.cpp
> >> source/Commands/CommandObjectRegister.cpp
> >> source/Commands/CommandObjectSettings.cpp
> >> source/Commands/CommandObjectSource.cpp
> >> source/Commands/CommandObjectTarget.cpp
> >> source/Commands/CommandObjectThread.cpp
> >> source/Commands/CommandObjectType.cpp
> >> source/Commands/CommandObjectWatchpoint.cpp
> >> source/Commands/CommandObjectWatchpointCommand.cpp
> >> source/Interpreter/OptionGroupArchitecture.cpp
> >> source/Interpreter/OptionGroupFormat.cpp
> >> source/Interpreter/OptionGroupOutputFile.cpp
> >> source/Interpreter/OptionGroupPlatform.cpp
> >> source/Interpreter/OptionGroupUUID.cpp
> >> source/Interpreter/OptionGroupValueObjectDisplay.cpp
> >> source/Interpreter/OptionGroupVariable.cpp
> >> source/Interpreter/OptionGroupWatchpoint.cpp
> >> source/Interpreter/Options.cpp
> >> source/Target/Platform.cpp
> >> source/Target/Process.cpp
> >> <D4369.11043.patch>_______________________________________________
> >> lldb-commits mailing list
> >> lldb-commits at cs.uiuc.edu
> >> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
> >
> > _______________________________________________
> > lldb-commits mailing list
> > lldb-commits at cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
> 
> _______________________________________________
> lldb-commits mailing list
> lldb-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
> 




More information about the lldb-commits mailing list