It completes the job of using EvaluateExpressionOptions consistently throughout the inferior function calling mechanism in lldb begun in Greg's patch r194009. It removes a handful of alternate calls into the ClangUserExpression/ClangFunction/ThreadPlanCallFunction which were there for convenience. Using the EvaluateExpressionOptions removes the need for them. Using that it gets the --debug option from Greg's patch to work cleanly. It also adds another EvaluateExpressionOption to not trap exceptions when running expressions. You shouldn't use this option unless you KNOW your expression can't throw beyond itself. This is: <rdar://problem/15374885> At present this is only available through the SB API's or python. It fixes a bug where function calls would unset the ObjC & C++ exception breakpoints without checking whether they were set by somebody else already. llvm-svn: 194182
97 lines
3.0 KiB
C++
97 lines
3.0 KiB
C++
//===-- SWIG interface for SBExpressionOptions -----------------------------------------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
namespace lldb {
|
|
|
|
%feature("docstring",
|
|
"A container for options to use when evaluating expressions."
|
|
) SBExpressionOptions;
|
|
|
|
class SBExpressionOptions
|
|
{
|
|
friend class SBFrame;
|
|
friend class SBValue;
|
|
|
|
public:
|
|
SBExpressionOptions();
|
|
|
|
SBExpressionOptions (const lldb::SBExpressionOptions &rhs);
|
|
|
|
~SBExpressionOptions();
|
|
|
|
bool
|
|
GetCoerceResultToId () const;
|
|
|
|
%feature("docstring", "Sets whether to coerce the expression result to ObjC id type after evaluation.") SetCoerceResultToId;
|
|
|
|
void
|
|
SetCoerceResultToId (bool coerce = true);
|
|
|
|
bool
|
|
GetUnwindOnError () const;
|
|
|
|
%feature("docstring", "Sets whether to unwind the expression stack on error.") SetUnwindOnError;
|
|
|
|
void
|
|
SetUnwindOnError (bool unwind = true);
|
|
|
|
bool
|
|
GetIgnoreBreakpoints () const;
|
|
|
|
%feature("docstring", "Sets whether to ignore breakpoint hits while running expressions.") SetUnwindOnError;
|
|
|
|
void
|
|
SetIgnoreBreakpoints (bool ignore = true);
|
|
|
|
lldb::DynamicValueType
|
|
GetFetchDynamicValue () const;
|
|
|
|
%feature("docstring", "Sets whether to cast the expression result to its dynamic type.") SetFetchDynamicValue;
|
|
|
|
void
|
|
SetFetchDynamicValue (lldb::DynamicValueType dynamic = lldb::eDynamicCanRunTarget);
|
|
|
|
uint32_t
|
|
GetTimeoutInMicroSeconds () const;
|
|
|
|
%feature("docstring", "Sets the timeout in microseconds to run the expression for. If try all threads is set to true and the expression doesn't complete within the specified timeout, all threads will be resumed for the same timeout to see if the expresson will finish.") SetTimeoutInMicroSeconds;
|
|
void
|
|
SetTimeoutInMicroSeconds (uint32_t timeout = 0);
|
|
|
|
bool
|
|
GetTryAllThreads () const;
|
|
|
|
%feature("docstring", "Sets whether to run all threads if the expression does not complete on one thread.") SetTryAllThreads;
|
|
void
|
|
SetTryAllThreads (bool run_others = true);
|
|
|
|
bool
|
|
GetTrapExceptions () const;
|
|
|
|
%feature("docstring", "Sets whether to abort expression evaluation if an exception is thrown while executing. Don't set this to false unless you know the function you are calling traps all exceptions itself.") SetTryAllThreads;
|
|
void
|
|
SetTrapExceptions (bool trap_exceptions = true);
|
|
|
|
protected:
|
|
|
|
SBExpressionOptions (lldb_private::EvaluateExpressionOptions &expression_options);
|
|
|
|
lldb_private::EvaluateExpressionOptions *
|
|
get () const;
|
|
|
|
lldb_private::EvaluateExpressionOptions &
|
|
ref () const;
|
|
|
|
private:
|
|
// This auto_pointer is made in the constructor and is always valid.
|
|
mutable std::unique_ptr<lldb_private::EvaluateExpressionOptions> m_opaque_ap;
|
|
};
|
|
|
|
} // namespace lldb
|