58#include "llvm/Support/PrettyStackTrace.h"
98 return this->
operator bool();
100SBFrame::operator
bool()
const {
102 llvm::Expected<StoppedExecutionContext> exe_ctx =
117 llvm::Expected<StoppedExecutionContext> exe_ctx =
124 SymbolContextItem scope =
static_cast<SymbolContextItem
>(resolve_scope);
125 if (
StackFrame *frame = exe_ctx->GetFramePtr())
126 sb_sym_ctx = frame->GetSymbolContext(scope);
134 llvm::Expected<StoppedExecutionContext> exe_ctx =
148 sb_module.
SetSP(module_sp);
155 llvm::Expected<StoppedExecutionContext> exe_ctx =
162 if (
StackFrame *frame = exe_ctx->GetFramePtr())
164 frame->GetSymbolContext(eSymbolContextCompUnit).comp_unit);
171 llvm::Expected<StoppedExecutionContext> exe_ctx =
178 if (
StackFrame *frame = exe_ctx->GetFramePtr())
179 return SBFunction(frame->GetSymbolContext(eSymbolContextFunction).function);
186 llvm::Expected<StoppedExecutionContext> exe_ctx =
193 if (
StackFrame *frame = exe_ctx->GetFramePtr())
194 return SBSymbol(frame->GetSymbolContext(eSymbolContextSymbol).symbol);
201 llvm::Expected<StoppedExecutionContext> exe_ctx =
208 if (
StackFrame *frame = exe_ctx->GetFramePtr())
209 return SBBlock(frame->GetSymbolContext(eSymbolContextBlock).block);
216 llvm::Expected<StoppedExecutionContext> exe_ctx =
223 if (
StackFrame *frame = exe_ctx->GetFramePtr())
224 return SBBlock(frame->GetFrameBlock());
231 llvm::Expected<StoppedExecutionContext> exe_ctx =
238 if (
StackFrame *frame = exe_ctx->GetFramePtr())
240 &frame->GetSymbolContext(eSymbolContextLineEntry).line_entry);
247 constexpr uint32_t error_frame_idx =
UINT32_MAX;
249 llvm::Expected<StoppedExecutionContext> exe_ctx =
253 return error_frame_idx;
256 if (
StackFrame *frame = exe_ctx->GetFramePtr())
257 return frame->GetFrameIndex();
258 return error_frame_idx;
264 llvm::Expected<StoppedExecutionContext> exe_ctx =
271 if (
StackFrame *frame = exe_ctx->GetFramePtr())
272 return frame->GetStackID().GetCallFrameAddressWithoutMetadata();
280 llvm::Expected<StoppedExecutionContext> exe_ctx =
287 Target *target = exe_ctx->GetTargetPtr();
288 if (
StackFrame *frame = exe_ctx->GetFramePtr())
298 constexpr bool error_ret_val =
false;
299 llvm::Expected<StoppedExecutionContext> exe_ctx =
303 return error_ret_val;
306 if (
StackFrame *frame = exe_ctx->GetFramePtr())
308 return reg_ctx_sp->SetPC(new_pc);
310 return error_ret_val;
316 llvm::Expected<StoppedExecutionContext> exe_ctx =
323 if (
StackFrame *frame = exe_ctx->GetFramePtr())
325 return reg_ctx_sp->GetSP();
333 llvm::Expected<StoppedExecutionContext> exe_ctx =
340 if (
StackFrame *frame = exe_ctx->GetFramePtr())
342 return reg_ctx_sp->GetFP();
350 llvm::Expected<StoppedExecutionContext> exe_ctx =
357 if (
StackFrame *frame = exe_ctx->GetFramePtr())
358 return SBAddress(frame->GetFrameCodeAddress());
372 llvm::Expected<StoppedExecutionContext> exe_ctx =
379 if (
StackFrame *frame = exe_ctx->GetFramePtr()) {
381 frame->CalculateTarget()->GetPreferDynamicValue();
392 if (var_path ==
nullptr || var_path[0] ==
'\0') {
396 llvm::Expected<StoppedExecutionContext> exe_ctx =
403 if (
StackFrame *frame = exe_ctx->GetFramePtr()) {
406 ValueObjectSP value_sp(frame->GetValueForVariableExpressionPath(
411 sb_value.
SetSP(value_sp, use_dynamic);
421 llvm::Expected<StoppedExecutionContext> exe_ctx =
428 if (
StackFrame *frame = exe_ctx->GetFramePtr()) {
430 frame->CalculateTarget()->GetPreferDynamicValue();
441 if (var_path ==
nullptr || var_path[0] ==
'\0') {
445 llvm::Expected<StoppedExecutionContext> exe_ctx =
452 if (
StackFrame *frame = exe_ctx->GetFramePtr()) {
455 ValueObjectSP value_sp(frame->GetValueForVariableExpressionPath(
459 var_sp,
error, mode));
460 sb_value.
SetSP(value_sp, use_dynamic);
468 llvm::Expected<StoppedExecutionContext> exe_ctx =
475 if (
StackFrame *frame = exe_ctx->GetFramePtr()) {
477 frame->CalculateTarget()->GetPreferDynamicValue();
490 if (name ==
nullptr || name[0] ==
'\0') {
494 llvm::Expected<StoppedExecutionContext> exe_ctx =
501 if (
StackFrame *frame = exe_ctx->GetFramePtr())
503 sb_value.
SetSP(value_sp, use_dynamic);
512 llvm::Expected<StoppedExecutionContext> exe_ctx =
519 if (
StackFrame *frame = exe_ctx->GetFramePtr()) {
521 frame->CalculateTarget()->GetPreferDynamicValue();
522 value =
FindValue(name, value_type, use_dynamic);
533 if (name ==
nullptr || name[0] ==
'\0') {
538 llvm::Expected<StoppedExecutionContext> exe_ctx =
556 switch (base_value_type) {
564 const bool can_create =
true;
565 const bool get_parent_variables =
true;
566 const bool stop_if_block_is_inlined_function =
true;
570 can_create, get_parent_variables, stop_if_block_is_inlined_function,
576 const bool get_file_globals =
true;
578 get_file_globals, include_synthetic_vars,
nullptr);
588 sb_value.
SetSP(value_sp, use_dynamic);
594 if (
const RegisterInfo *reg_info = reg_ctx->GetRegisterInfoByName(name)) {
596 sb_value.
SetSP(value_sp);
604 const uint32_t num_sets = reg_ctx->GetRegisterSetCount();
605 for (uint32_t set_idx = 0; set_idx < num_sets; ++set_idx) {
606 const RegisterSet *reg_set = reg_ctx->GetRegisterSet(set_idx);
608 (llvm::StringRef(reg_set->
name).equals_insensitive(name) ||
609 llvm::StringRef(reg_set->
short_name).equals_insensitive(name))) {
611 sb_value.
SetSP(value_sp);
620 Target *target = exe_ctx->GetTargetPtr();
623 value_sp = expr_var_sp->GetValueObject();
624 sb_value.
SetSP(value_sp, use_dynamic);
640 return (this_sp && that_sp && this_sp->GetStackID() == that_sp->GetStackID());
658 llvm::Expected<StoppedExecutionContext> exe_ctx =
665 ThreadSP thread_sp(exe_ctx->GetThreadSP());
674 llvm::Expected<StoppedExecutionContext> exe_ctx =
681 if (
auto *frame = exe_ctx->GetFramePtr())
688 bool in_scope_only) {
692 llvm::Expected<StoppedExecutionContext> exe_ctx =
699 if (
StackFrame *frame = exe_ctx->GetFramePtr()) {
700 Target *target = exe_ctx->GetTargetPtr();
702 frame->CalculateTarget()->GetPreferDynamicValue();
703 const bool include_runtime_support_values =
723 bool statics,
bool in_scope_only,
728 llvm::Expected<StoppedExecutionContext> exe_ctx =
735 Target *target = exe_ctx->GetTargetPtr();
736 const bool include_runtime_support_values =
768 switch (value_type) {
807 const bool include_runtime_support_values =
814 true,
true, &var_error);
816 std::set<VariableSP> variable_set;
820 const size_t num_variables = variable_list->
GetSize();
821 size_t num_produced = 0;
822 for (
const VariableSP &variable_sp : *variable_list) {
824 synthetic, *variable_sp))
829 "Interrupted getting frame variables with {0} of {1} "
831 num_produced, num_variables))
835 if (variable_set.insert(variable_sp).second ==
false)
837 if (in_scope_only && !variable_sp->IsInScope(&frame))
843 if (!include_runtime_support_values && valobj_sp !=
nullptr &&
844 valobj_sp->IsRuntimeSupportValue())
847 value_list.
Append(to_sbvalue(valobj_sp, use_dynamic));
856static llvm::SmallVector<ValueObjectSP>
862 if (!recognized_frame)
866 recognized_frame->GetRecognizedArguments();
867 if (!recognized_arg_list)
870 return llvm::to_vector(recognized_arg_list->GetObjects());
876 llvm::Expected<StoppedExecutionContext> exe_ctx =
887 auto valobj_to_sbvalue = [](
ValueObjectSP valobj,
bool use_dynamic) {
889 value_sb.
SetSP(valobj, use_dynamic);
893 std::pair<WasInterrupted, Status> fetch_result =
895 exe_ctx->GetTargetPtr()->GetDebugger(),
897 if (fetch_result.second.Fail())
898 value_list.
SetError(std::move(fetch_result.second));
905 options, *frame,
SBTarget(exe_ctx->GetTargetSP()));
908 value_sb.
SetSP(arg, use_dynamic);
909 value_list.
Append(value_sb);
917 llvm::Expected<StoppedExecutionContext> exe_ctx =
933 const uint32_t num_sets = reg_ctx->GetRegisterSetCount();
934 for (uint32_t set_idx = 0; set_idx < num_sets; ++set_idx)
944 llvm::Expected<StoppedExecutionContext> exe_ctx =
959 const RegisterInfo *reg_info = reg_ctx->GetRegisterInfoByName(name);
965 result.
SetSP(value_sp);
974 llvm::Expected<StoppedExecutionContext> exe_ctx =
982 error.SetErrorString(
"The provided SBFormat object is invalid");
986 if (
StackFrame *frame = exe_ctx->GetFramePtr();
989 error.SetErrorStringWithFormat(
990 "It was not possible to generate a frame "
991 "description with the given format string '%s'",
1001 llvm::Expected<StoppedExecutionContext> exe_ctx =
1005 strm.
PutCString(
"Error: process is not stopped.");
1009 if (
StackFrame *frame = exe_ctx->GetFramePtr())
1018 llvm::Expected<StoppedExecutionContext> exe_ctx =
1034 Target *target = exe_ctx->GetTargetPtr();
1036 if (!language && frame)
1051 llvm::Expected<StoppedExecutionContext> exe_ctx =
1059 Target *target = exe_ctx->GetTargetPtr();
1061 if (!language && frame)
1069 bool unwind_on_error) {
1073 llvm::Expected<StoppedExecutionContext> exe_ctx =
1084 Target *target = exe_ctx->GetTargetPtr();
1086 if (!language && frame)
1094 "process is running.");
1098 expr_result.
SetSP(expr_value_sp,
false);
1106 auto LogResult = [](
SBValue expr_result) {
1108 if (expr_result.GetError().Success())
1110 "** [SBFrame::EvaluateExpression] Expression result is "
1111 "%s, summary %s **",
1112 expr_result.GetValue(), expr_result.GetSummary());
1116 "** [SBFrame::EvaluateExpression] Expression evaluation failed: "
1118 expr_result.GetError().GetCString());
1121 if (expr ==
nullptr || expr[0] ==
'\0') {
1125 llvm::Expected<StoppedExecutionContext> exe_ctx =
1130 LogResult(error_result);
1131 return error_result;
1138 std::unique_ptr<llvm::PrettyStackTraceFormat> stack_trace;
1139 Target *target = exe_ctx->GetTargetPtr();
1143 stack_trace = std::make_unique<llvm::PrettyStackTraceFormat>(
1144 "SBFrame::EvaluateExpression (expr = \"%s\", fetch_dynamic_value "
1154 LogResult(expr_result);
1163 llvm::Expected<StoppedExecutionContext> exe_ctx =
1187 llvm::Expected<StoppedExecutionContext> exe_ctx =
1194 if (
StackFrame *frame = exe_ctx->GetFramePtr())
1208 llvm::Expected<StoppedExecutionContext> exe_ctx =
1215 if (
StackFrame *frame = exe_ctx->GetFramePtr())
1224 llvm::Expected<StoppedExecutionContext> exe_ctx =
1231 if (
StackFrame *frame = exe_ctx->GetFramePtr())
1240 llvm::Expected<StoppedExecutionContext> exe_ctx =
1247 if (
StackFrame *frame = exe_ctx->GetFramePtr())
1262 llvm::Expected<StoppedExecutionContext> exe_ctx =
1269 if (
StackFrame *frame = exe_ctx->GetFramePtr())
1277 llvm::Expected<StoppedExecutionContext> exe_ctx =
1284 if (
StackFrame *frame = exe_ctx->GetFramePtr())
1292 llvm::Expected<StoppedExecutionContext> exe_ctx =
1299 if (
StackFrame *frame = exe_ctx->GetFramePtr())
static llvm::raw_ostream & error(Stream &strm)
#define INTERRUPT_REQUESTED(debugger,...)
This handy define will keep you from having to generate a report for the interruption by hand.
#define LLDB_INSTRUMENT_VA(...)
#define LLDB_LOGF(log,...)
#define LLDB_LOG_ERROR(log, error,...)
static std::pair< WasInterrupted, Status > FetchVariablesUnlessInterrupted(const lldb::SBVariablesOptions &options, StackFrame &frame, SBValueList &value_list, Debugger &dbg, std::function< SBValue(ValueObjectSP, bool)> to_sbvalue)
Populates value_list with the variables from frame according to options.
static bool IsInRequestedScope(bool statics, bool arguments, bool locals, bool synthetic, Variable &var)
Returns true if the variable is in any of the requested scopes.
static llvm::SmallVector< ValueObjectSP > FetchRecognizedArguments(const SBVariablesOptions &options, StackFrame &frame, SBTarget target)
Populates value_list with recognized arguments of frame according to options.
void SetFetchDynamicValue(lldb::DynamicValueType dynamic=lldb::eDynamicCanRunTarget)
void SetLanguage(lldb::LanguageType language)
lldb_private::EvaluateExpressionOptions & ref() const
void SetIgnoreBreakpoints(bool ignore=true)
void SetUnwindOnError(bool unwind=true)
lldb::DynamicValueType GetFetchDynamicValue() const
lldb::ExecutionContextRefSP m_opaque_sp
lldb::addr_t GetPC() const
const char * GetFunctionName()
Get the appropriate function name for this frame.
lldb::SBValue FindValue(const char *name, ValueType value_type)
Find variables, register sets, registers, or persistent variables using the frame as the scope.
lldb::SBSymbolContext GetSymbolContext(uint32_t resolve_scope) const
SBError GetDescriptionWithFormat(const SBFormat &format, SBStream &output)
Similar to GetDescription() but the format of the description can be configured via the format parame...
lldb::SBValue FindRegister(const char *name)
bool SetPC(lldb::addr_t new_pc)
lldb::SBValue FindVariable(const char *var_name)
The version that doesn't supply a 'use_dynamic' value will use the target's default.
const char * GetDisplayFunctionName()
bool IsInlined()
Return true if this frame represents an inlined function.
bool operator==(const lldb::SBFrame &rhs) const
lldb::addr_t GetCFA() const
lldb::SBValue GetValueForVariablePathWithMode(const char *var_path, lldb::DILMode mode, DynamicValueType use_dynamic)
lldb::addr_t GetFP() const
const lldb::SBFrame & operator=(const lldb::SBFrame &rhs)
static SBValue CreateProcessIsRunningExprEvalError()
Return an SBValue containing an error message that warns the process is not currently stopped.
lldb::SBLineEntry GetLineEntry() const
lldb::SBValue EvaluateExpression(const char *expr)
The version that doesn't supply a 'use_dynamic' value will use the target's default.
lldb::SBCompileUnit GetCompileUnit() const
uint32_t GetFrameID() const
lldb::SBAddress GetPCAddress() const
lldb::SBFunction GetFunction() const
lldb::SBBlock GetBlock() const
Gets the deepest block that contains the frame PC.
lldb::SBValueList GetVariables(bool arguments, bool locals, bool statics, bool in_scope_only)
The version that doesn't supply a 'use_dynamic' value will use the target's default.
bool IsEqual(const lldb::SBFrame &that) const
const char * Disassemble() const
void SetFrameSP(const lldb::StackFrameSP &lldb_object_sp)
lldb::SBValue GetValueForVariablePath(const char *var_path, DynamicValueType use_dynamic)
lldb::SBThread GetThread() const
lldb::SBValueList GetRegisters()
lldb::LanguageType GuessLanguage() const
lldb::SBBlock GetFrameBlock() const
Gets the lexical block that defines the stack frame.
lldb::addr_t GetSP() const
lldb::StackFrameSP GetFrameSP() const
bool IsHidden() const
Return whether a frame recognizer decided this frame should not be displayes in backtraces etc.
SBStructuredData GetLanguageSpecificData() const
Language plugins can use this API to report language-specific runtime information about this compile ...
lldb::SBSymbol GetSymbol() const
lldb::SBModule GetModule() const
bool GetDescription(lldb::SBStream &description)
bool operator!=(const lldb::SBFrame &rhs) const
void SetSP(const ModuleSP &module_sp)
lldb_private::Stream & ref()
StructuredDataImplUP m_impl_up
void Append(const lldb::SBValue &val_obj)
void SetError(lldb_private::Status &&status)
void SetSP(const lldb::ValueObjectSP &sp)
void SetIncludeRuntimeSupportValues(bool)
void SetIncludeSynthetic(bool)
bool GetIncludeSynthetic() const
bool GetIncludeRuntimeSupportValues() const
void SetIncludeLocals(bool)
void SetIncludeArguments(bool)
lldb::DynamicValueType GetUseDynamic() const
bool GetIncludeArguments() const
void SetInScopeOnly(bool)
bool GetIncludeStatics() const
void SetIncludeStatics(bool)
void SetUseDynamic(lldb::DynamicValueType)
bool GetIncludeLocals() const
bool GetInScopeOnly() const
bool GetIncludeRecognizedArguments(const lldb::SBTarget &) const
uint32_t AppendVariables(bool can_create, bool get_parent_variables, bool stop_if_block_is_inlined_function, const std::function< bool(Variable *)> &filter, VariableList *variable_list)
Appends the variables from this block, and optionally from all parent blocks, to variable_list.
A uniqued constant string class.
const char * GetCString() const
Get the string value as a C string.
A class to manage flag bits.
Execution context objects refer to objects in the execution of the program that is being debugged.
This base class provides an interface to stack frames.
@ eExpressionPathOptionCheckPtrVsMember
@ eExpressionPathOptionsAllowDirectIVarAccess
virtual const char * GetFunctionName()
Get the frame's demangled name.
virtual bool IsHidden()
Query whether this frame should be hidden from backtraces.
virtual bool IsSynthetic() const
Query whether this frame is synthetic.
virtual bool IsInlined()
Query whether this frame is a concrete frame on the call stack, or if it is an inlined frame derived ...
virtual SourceLanguage GuessLanguage()
Similar to GetLanguage(), but is allowed to take a potentially incorrect guess if exact information i...
virtual lldb::RegisterContextSP GetRegisterContext()
Get the RegisterContext for this frame, if possible.
virtual StructuredData::ObjectSP GetLanguageSpecificData()
Language plugins can use this API to report language-specific runtime information about this compile ...
virtual SourceLanguage GetLanguage()
Query this frame to determine what the default language should be when parsing expressions given the ...
virtual lldb::ValueObjectSP GetValueObjectForFrameVariable(const lldb::VariableSP &variable_sp, lldb::DynamicValueType use_dynamic)
Create a ValueObject for a given Variable in this StackFrame.
virtual VariableList * GetVariableList(bool get_file_globals, bool include_synthetic_vars, Status *error_ptr)
Retrieve the list of variables whose scope either:
virtual const SymbolContext & GetSymbolContext(lldb::SymbolContextItem resolve_scope)
Provide a SymbolContext for this StackFrame's current pc value.
virtual const char * GetDisplayFunctionName()
Get the frame's demangled display name.
virtual bool IsArtificial() const
Query whether this frame is artificial (e.g a synthesized result of inferring missing tail call frame...
virtual void DumpUsingSettingsFormat(Stream *strm, bool show_unique=false, const llvm::StringRef frame_marker="")
Print a description for this frame using the frame-format formatter settings.
virtual bool DumpUsingFormat(Stream &strm, const lldb_private::FormatEntity::Entry *format, llvm::StringRef frame_marker={})
Print a description of this frame using the provided frame format.
virtual lldb::RecognizedStackFrameSP GetRecognizedFrame()
lldb::TargetSP CalculateTarget() override
static Status FromErrorString(const char *str)
static Status FromError(llvm::Error error)
Avoid using this in new code. Migrate APIs to llvm::Expected instead.
const char * GetData() const
A stream class that can stream formatted output to a file.
size_t PutCString(llvm::StringRef cstr)
Output a C string to the stream.
std::shared_ptr< Object > ObjectSP
Defines a symbol context baton that can be handed other debug core functions.
Block * block
The Block for a given query.
lldb::ModuleSP module_sp
The Module for a given query.
bool GetDisplayRuntimeSupportValues() const
SourceLanguage GetLanguage() const
bool GetDisplayExpressionsInCrashlogs() const
lldb::addr_t GetOpcodeLoadAddress(lldb::addr_t load_addr, AddressClass addr_class=AddressClass::eInvalid) const
Get load_addr as an opcode for this target.
lldb::ExpressionVariableSP GetPersistentVariable(ConstString name)
lldb::ExpressionResults EvaluateExpression(llvm::StringRef expression, ExecutionContextScope *exe_scope, lldb::ValueObjectSP &result_valobj_sp, const EvaluateExpressionOptions &options=EvaluateExpressionOptions(), std::string *fixed_expression=nullptr, ValueObject *ctx_obj=nullptr)
static lldb::ValueObjectSP Create(ExecutionContextScope *exe_scope, lldb::ByteOrder byte_order, uint32_t addr_byte_size, lldb::addr_t address=LLDB_INVALID_ADDRESS, ValueObjectManager *manager=nullptr)
These routines create ValueObjectConstResult ValueObjects from various data sources.
static lldb::ValueObjectSP Create(ExecutionContextScope *exe_scope, lldb::RegisterContextSP ®_ctx_sp, uint32_t set_idx)
static lldb::ValueObjectSP Create(ExecutionContextScope *exe_scope, lldb::RegisterContextSP ®_ctx_sp, const RegisterInfo *reg_info)
lldb::VariableSP FindVariable(ConstString name, bool include_static_members=true) const
size_t AppendVariablesIfUnique(VariableList &var_list)
bool IsInScope(StackFrame *frame)
lldb::ValueType GetScope() const
#define LLDB_INVALID_ADDRESS
A class that represents a running process on the host machine.
Log * GetLog(Cat mask)
Retrieve the Log object for the channel associated with the given log enum.
constexpr bool IsSyntheticValueType(lldb::ValueType vt)
Return true if vt represents a synthetic value, false if not.
std::unique_ptr< T > clone(const std::unique_ptr< T > &src)
constexpr lldb::ValueType GetBaseValueType(lldb::ValueType vt)
Get the base value type - for when we don't care if the value is synthetic or not,...
llvm::Expected< StoppedExecutionContext > GetStoppedExecutionContext(const ExecutionContextRef *exe_ctx_ref_ptr)
class LLDB_API SBLineEntry
class LLDB_API SBFunction
std::shared_ptr< lldb_private::StackFrame > StackFrameSP
std::shared_ptr< lldb_private::RecognizedStackFrame > RecognizedStackFrameSP
class LLDB_API SBValueList
std::shared_ptr< lldb_private::Thread > ThreadSP
std::shared_ptr< lldb_private::ValueObject > ValueObjectSP
std::shared_ptr< lldb_private::ExpressionVariable > ExpressionVariableSP
LanguageType
Programming language type.
@ eLanguageTypeUnknown
Unknown or invalid language value.
std::shared_ptr< lldb_private::ValueObjectList > ValueObjectListSP
std::shared_ptr< lldb_private::Variable > VariableSP
@ eValueTypeVariableGlobal
globals variable
@ eValueTypeConstResult
constant result variables
@ eValueTypeVariableLocal
function local variables
@ eValueTypeVariableArgument
function argument variables
@ eValueTypeRegister
stack frame register value
@ eValueTypeVariableStatic
static variable
@ eValueTypeRegisterSet
A collection of stack frame register values.
@ eValueTypeVariableThreadLocal
thread local storage variable
std::shared_ptr< lldb_private::RegisterContext > RegisterContextSP
DILMode
Data Inspection Language (DIL) evaluation modes.
@ eDILModeFull
Allowed: everything supported by DIL.
std::shared_ptr< lldb_private::Module > ModuleSP
class LLDB_API SBCompileUnit
Every register is described in detail including its name, alternate name (optional),...
Registers are grouped into register sets.
const char * name
Name of this register set.
const char * short_name
A short name for this register set.
A type-erased pair of llvm::dwarf::SourceLanguageName and version.
lldb::LanguageType AsLanguageType() const