LLDB mainline
|
This base class provides an interface to stack frames. More...
#include "lldb/Target/StackFrame.h"
Public Types | |
enum | ExpressionPathOption { eExpressionPathOptionCheckPtrVsMember = (1u << 0) , eExpressionPathOptionsNoFragileObjcIvar = (1u << 1) , eExpressionPathOptionsNoSyntheticChildren = (1u << 2) , eExpressionPathOptionsNoSyntheticArrayRange = (1u << 3) , eExpressionPathOptionsAllowDirectIVarAccess = (1u << 4) , eExpressionPathOptionsInspectAnonymousUnions = (1u << 5) } |
enum class | Kind { Regular , History , Artificial } |
Public Member Functions | |
StackFrame (const lldb::ThreadSP &thread_sp, lldb::user_id_t frame_idx, lldb::user_id_t concrete_frame_idx, lldb::addr_t cfa, bool cfa_is_valid, lldb::addr_t pc, Kind frame_kind, bool behaves_like_zeroth_frame, const SymbolContext *sc_ptr) | |
Construct a StackFrame object without supplying a RegisterContextSP. | |
StackFrame (const lldb::ThreadSP &thread_sp, lldb::user_id_t frame_idx, lldb::user_id_t concrete_frame_idx, const lldb::RegisterContextSP ®_context_sp, lldb::addr_t cfa, lldb::addr_t pc, bool behaves_like_zeroth_frame, const SymbolContext *sc_ptr) | |
StackFrame (const lldb::ThreadSP &thread_sp, lldb::user_id_t frame_idx, lldb::user_id_t concrete_frame_idx, const lldb::RegisterContextSP ®_context_sp, lldb::addr_t cfa, const Address &pc, bool behaves_like_zeroth_frame, const SymbolContext *sc_ptr) | |
~StackFrame () override | |
lldb::ThreadSP | GetThread () const |
StackID & | GetStackID () |
const Address & | GetFrameCodeAddress () |
Get an Address for the current pc value in this StackFrame. | |
Address | GetFrameCodeAddressForSymbolication () |
Get the current code Address suitable for symbolication, may not be the same as GetFrameCodeAddress(). | |
bool | ChangePC (lldb::addr_t pc) |
Change the pc value for a given thread. | |
const SymbolContext & | GetSymbolContext (lldb::SymbolContextItem resolve_scope) |
Provide a SymbolContext for this StackFrame's current pc value. | |
llvm::Error | GetFrameBaseValue (Scalar &value) |
Return the Canonical Frame Address (DWARF term) for this frame. | |
DWARFExpressionList * | GetFrameBaseExpression (Status *error_ptr) |
Get the DWARFExpressionList corresponding to the Canonical Frame Address. | |
Block * | GetFrameBlock () |
Get the current lexical scope block for this StackFrame, if possible. | |
lldb::RegisterContextSP | GetRegisterContext () |
Get the RegisterContext for this frame, if possible. | |
const lldb::RegisterContextSP & | GetRegisterContextSP () const |
VariableList * | GetVariableList (bool get_file_globals, Status *error_ptr) |
Retrieve the list of variables that are in scope at this StackFrame's pc. | |
lldb::VariableListSP | GetInScopeVariableList (bool get_file_globals, bool must_have_valid_location=false) |
Retrieve the list of variables that are in scope at this StackFrame's pc. | |
lldb::ValueObjectSP | GetValueForVariableExpressionPath (llvm::StringRef var_expr, lldb::DynamicValueType use_dynamic, uint32_t options, lldb::VariableSP &var_sp, Status &error) |
Create a ValueObject for a variable name / pathname, possibly including simple dereference/child selection syntax. | |
bool | HasDebugInformation () |
Determine whether this StackFrame has debug information available or not. | |
const char * | Disassemble () |
Return the disassembly for the instructions of this StackFrame's function as a single C string. | |
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. | |
void | DumpUsingSettingsFormat (Stream *strm, bool show_unique=false, const char *frame_marker=nullptr) |
Print a description for this frame using the frame-format formatter settings. | |
void | Dump (Stream *strm, bool show_frame_index, bool show_fullpaths) |
Print a description for this frame using a default format. | |
bool | GetStatus (Stream &strm, bool show_frame_info, bool show_source, bool show_unique=false, const char *frame_marker=nullptr) |
Print a description of this stack frame and/or the source context/assembly for this stack frame. | |
bool | IsInlined () |
Query whether this frame is a concrete frame on the call stack, or if it is an inlined frame derived from the debug information and presented by the debugger. | |
bool | IsHistorical () const |
Query whether this frame is part of a historical backtrace. | |
bool | IsArtificial () const |
Query whether this frame is artificial (e.g a synthesized result of inferring missing tail call frames from a backtrace). | |
bool | IsHidden () |
Query whether this frame should be hidden from backtraces. | |
StructuredData::ObjectSP | GetLanguageSpecificData () |
Language plugins can use this API to report language-specific runtime information about this compile unit, such as additional language version details or feature flags. | |
const char * | GetFunctionName () |
Get the frame's demangled name. | |
const char * | GetDisplayFunctionName () |
Get the frame's demangled display name. | |
uint32_t | GetFrameIndex () const |
Query this frame to find what frame it is in this Thread's StackFrameList. | |
void | SetFrameIndex (uint32_t index) |
Set this frame's synthetic frame index. | |
uint32_t | GetConcreteFrameIndex () const |
Query this frame to find what frame it is in this Thread's StackFrameList, not counting inlined frames. | |
lldb::ValueObjectSP | GetValueObjectForFrameVariable (const lldb::VariableSP &variable_sp, lldb::DynamicValueType use_dynamic) |
Create a ValueObject for a given Variable in this StackFrame. | |
SourceLanguage | GetLanguage () |
Query this frame to determine what the default language should be when parsing expressions given the execution context. | |
SourceLanguage | GuessLanguage () |
Similar to GetLanguage(), but is allowed to take a potentially incorrect guess if exact information is not available. | |
lldb::ValueObjectSP | GuessValueForAddress (lldb::addr_t addr) |
Attempt to econstruct the ValueObject for a given raw address touched by the current instruction. | |
lldb::ValueObjectSP | GuessValueForRegisterAndOffset (ConstString reg, int64_t offset) |
Attempt to reconstruct the ValueObject for the address contained in a given register plus an offset. | |
lldb::ValueObjectSP | FindVariable (ConstString name) |
Attempt to reconstruct the ValueObject for a variable with a given name from within the current StackFrame, within the current block. | |
lldb::TargetSP | CalculateTarget () override |
lldb::ProcessSP | CalculateProcess () override |
lldb::ThreadSP | CalculateThread () override |
lldb::StackFrameSP | CalculateStackFrame () override |
void | CalculateExecutionContext (ExecutionContext &exe_ctx) override |
Reconstruct the object's execution context into sc. | |
lldb::RecognizedStackFrameSP | GetRecognizedFrame () |
![]() | |
virtual | ~ExecutionContextScope ()=default |
virtual lldb::TargetSP | CalculateTarget ()=0 |
virtual lldb::ProcessSP | CalculateProcess ()=0 |
virtual lldb::ThreadSP | CalculateThread ()=0 |
virtual lldb::StackFrameSP | CalculateStackFrame ()=0 |
virtual void | CalculateExecutionContext (ExecutionContext &exe_ctx)=0 |
Reconstruct the object's execution context into sc. | |
Protected Member Functions | |
void | SetSymbolContextScope (SymbolContextScope *symbol_scope) |
void | UpdateCurrentFrameFromPreviousFrame (StackFrame &prev_frame) |
void | UpdatePreviousFrameFromCurrentFrame (StackFrame &curr_frame) |
bool | HasCachedData () const |
Private Member Functions | |
lldb::ValueObjectSP | LegacyGetValueForVariableExpressionPath (llvm::StringRef var_expr, lldb::DynamicValueType use_dynamic, uint32_t options, lldb::VariableSP &var_sp, Status &error) |
Private methods, called from GetValueForVariableExpressionPath. | |
lldb::ValueObjectSP | DILGetValueForVariableExpressionPath (llvm::StringRef var_expr, lldb::DynamicValueType use_dynamic, uint32_t options, lldb::VariableSP &var_sp, Status &error) |
StackFrame (const StackFrame &)=delete | |
const StackFrame & | operator= (const StackFrame &)=delete |
Private Attributes | |
Address | m_frame_code_addr |
The frame code address (might not be the same as the actual PC for inlined frames) as a section/offset address. | |
SymbolContext | m_sc |
Flags | m_flags |
Scalar | m_frame_base |
Status | m_frame_base_error |
uint16_t | m_frame_recognizer_generation = 0 |
bool | m_cfa_is_valid |
Does this frame have a CFA? Different from CFA == LLDB_INVALID_ADDRESS. | |
Kind | m_stack_frame_kind |
bool | m_behaves_like_zeroth_frame |
Whether this frame behaves like the zeroth frame, in the sense that its pc value might not immediately follow a call (and thus might be the first address of its function). | |
lldb::VariableListSP | m_variable_list_sp |
ValueObjectList | m_variable_list_value_objects |
Value objects for each variable in m_variable_list_sp. | |
std::optional< lldb::RecognizedStackFrameSP > | m_recognized_frame_sp |
StreamString | m_disassembly |
std::recursive_mutex | m_mutex |
lldb::ThreadWP | m_thread_wp |
For StackFrame only. | |
uint32_t | m_frame_index |
uint32_t | m_concrete_frame_index |
lldb::RegisterContextSP | m_reg_context_sp |
StackID | m_id |
Friends | |
class | StackFrameList |
This base class provides an interface to stack frames.
StackFrames may have a Canonical Frame Address (CFA) or not. A frame may have a plain pc value or it may indicate a specific point in the debug session so the correct section load list is used for symbolication.
Local variables may be available, or not. A register context may be available, or not.
Definition at line 43 of file StackFrame.h.
Definition at line 46 of file StackFrame.h.
|
strong |
Definition at line 55 of file StackFrame.h.
StackFrame::StackFrame | ( | const lldb::ThreadSP & | thread_sp, |
lldb::user_id_t | frame_idx, | ||
lldb::user_id_t | concrete_frame_idx, | ||
lldb::addr_t | cfa, | ||
bool | cfa_is_valid, | ||
lldb::addr_t | pc, | ||
StackFrame::Kind | kind, | ||
bool | behaves_like_zeroth_frame, | ||
const SymbolContext * | sc_ptr | ||
) |
Construct a StackFrame object without supplying a RegisterContextSP.
This is the one constructor that doesn't take a RegisterContext parameter. This ctor may be called when creating a history StackFrame; these are used if we've collected a stack trace of pc addresses at some point in the past. We may only have pc values. We may have a CFA, or more likely, we won't.
[in] | thread_sp | The Thread that this frame belongs to. |
[in] | frame_idx | This StackFrame's frame index number in the Thread. If inlined stack frames are being created, this may differ from the concrete_frame_idx which is the frame index without any inlined stack frames. |
[in] | concrete_frame_idx | The StackFrame's frame index number in the Thread without any inlined stack frames being included in the index. |
[in] | cfa | The Canonical Frame Address (this terminology from DWARF) for this stack frame. The CFA for a stack frame does not change over the span of the stack frame's existence. It is often the value of the caller's stack pointer before the call instruction into this frame's function. It is usually not the same as the frame pointer register's value. |
[in] | cfa_is_valid | A history stack frame may not have a CFA value collected. We want to distinguish between "no CFA available" and a CFA of LLDB_INVALID_ADDRESS. |
[in] | pc | The current pc value of this stack frame. |
[in] | sc_ptr | Optionally seed the StackFrame with the SymbolContext information that has already been discovered. |
Definition at line 54 of file StackFrame.cpp.
References lldb_private::SymbolContext::GetResolvedMask(), IsHistorical(), m_cfa_is_valid, m_flags, m_frame_index, m_id, m_sc, lldb_private::Flags::Set(), and lldb_private::StackID::SetCFA().
StackFrame::StackFrame | ( | const lldb::ThreadSP & | thread_sp, |
lldb::user_id_t | frame_idx, | ||
lldb::user_id_t | concrete_frame_idx, | ||
const lldb::RegisterContextSP & | reg_context_sp, | ||
lldb::addr_t | cfa, | ||
lldb::addr_t | pc, | ||
bool | behaves_like_zeroth_frame, | ||
const SymbolContext * | sc_ptr | ||
) |
Definition at line 80 of file StackFrame.cpp.
References lldb_private::SymbolContext::GetResolvedMask(), m_flags, m_sc, lldb_private::Flags::Set(), and lldb_private::SymbolContext::target_sp.
StackFrame::StackFrame | ( | const lldb::ThreadSP & | thread_sp, |
lldb::user_id_t | frame_idx, | ||
lldb::user_id_t | concrete_frame_idx, | ||
const lldb::RegisterContextSP & | reg_context_sp, | ||
lldb::addr_t | cfa, | ||
const Address & | pc, | ||
bool | behaves_like_zeroth_frame, | ||
const SymbolContext * | sc_ptr | ||
) |
Definition at line 106 of file StackFrame.cpp.
References lldb_private::Address::GetModule(), lldb_private::SymbolContext::GetResolvedMask(), m_flags, m_sc, lldb_private::SymbolContext::module_sp, lldb_private::Flags::Set(), and lldb_private::SymbolContext::target_sp.
|
overridedefault |
|
privatedelete |
|
overridevirtual |
Reconstruct the object's execution context into sc.
The object should fill in as much of the ExecutionContextScope as it can so function calls that require a execution context can be made for the given object.
[out] | exe_ctx | A reference to an execution context object that gets filled in. |
Implements lldb_private::ExecutionContextScope.
Definition at line 1871 of file StackFrame.cpp.
References lldb_private::ExecutionContext::SetContext().
Referenced by lldb_private::Process::CallVoidArgVoidPtrReturn(), GetValueForVariableExpressionPath(), lldb_private::InferiorCallMmap(), and lldb_private::InferiorCallMunmap().
|
overridevirtual |
Implements lldb_private::ExecutionContextScope.
Definition at line 1859 of file StackFrame.cpp.
References GetThread().
Referenced by FindVariable(), GetLanguageSpecificData(), lldb_private::EmulateInstruction::ReadMemoryFrame(), and lldb_private::EmulateInstruction::WriteMemoryFrame().
|
overridevirtual |
Implements lldb_private::ExecutionContextScope.
Definition at line 1869 of file StackFrame.cpp.
Referenced by GetRecognizedFrame().
|
overridevirtual |
Implements lldb_private::ExecutionContextScope.
Definition at line 1848 of file StackFrame.cpp.
References GetThread().
Referenced by lldb::SBFrame::EvaluateExpression(), lldb::SBFrame::FindValue(), lldb::SBFrame::FindVariable(), FindVariable(), GetFrameCodeAddressForSymbolication(), GetSymbolContext(), lldb::SBFrame::GetValueForVariablePath(), lldb::SBFrame::GetVariables(), GuessValueForAddress(), GuessValueForRegisterAndOffset(), lldb_private::Variable::LocationIsValidForFrame(), and lldb_private::StackFrameList::SynthesizeTailCallFrames().
|
overridevirtual |
Implements lldb_private::ExecutionContextScope.
Definition at line 1867 of file StackFrame.cpp.
References GetThread().
bool StackFrame::ChangePC | ( | lldb::addr_t | pc | ) |
Change the pc value for a given thread.
Change the current pc value for the frame on this thread.
[in] | pc | The load address that the pc will be set to. |
Definition at line 248 of file StackFrame.cpp.
References lldb_private::SymbolContext::Clear(), GetThread(), IsHistorical(), m_flags, m_frame_code_addr, m_mutex, m_sc, pc, lldb_private::Flags::Reset(), and lldb_private::Address::SetRawAddress().
|
private |
Definition at line 523 of file StackFrame.cpp.
References error(), and LegacyGetValueForVariableExpressionPath().
Referenced by GetValueForVariableExpressionPath().
const char * StackFrame::Disassemble | ( | ) |
Return the disassembly for the instructions of this StackFrame's function as a single C string.
Definition at line 262 of file StackFrame.cpp.
References lldb_private::Disassembler::Disassemble(), lldb_private::StreamString::Empty(), lldb_private::StreamString::GetData(), lldb_private::ExecutionContext::GetTargetPtr(), m_disassembly, and m_mutex.
void StackFrame::Dump | ( | Stream * | strm, |
bool | show_frame_index, | ||
bool | show_fullpaths | ||
) |
Print a description for this frame using a default format.
[in] | strm | The Stream to print the description to. |
[in] | show_frame_index | Whether to print the frame number or not. |
[in] | show_fullpaths | Whether to print the full source paths or just the file base name. |
Definition at line 1913 of file StackFrame.cpp.
References lldb_private::SymbolContext::DumpStopContext(), lldb_private::ArchSpec::GetAddressByteSize(), lldb_private::Target::GetArchitecture(), lldb_private::ExecutionContext::GetBestExecutionContextScope(), GetFrameCodeAddress(), GetSymbolContext(), lldb_private::ExecutionContext::GetTargetPtr(), m_frame_index, m_sc, and lldb_private::Stream::Printf().
Referenced by DumpUsingSettingsFormat().
bool StackFrame::DumpUsingFormat | ( | Stream & | strm, |
const lldb_private::FormatEntity::Entry * | format, | ||
llvm::StringRef | frame_marker = {} |
||
) |
Print a description of this frame using the provided frame format.
[out] | strm | The Stream to print the description to. |
[in] | frame_marker | Optional string that will be prepended to the frame output description. |
format
worked. Definition at line 1875 of file StackFrame.cpp.
References lldb_private::FormatEntity::Format(), lldb_private::StreamString::GetString(), GetSymbolContext(), m_sc, and lldb_private::Stream::PutCString().
Referenced by DumpUsingSettingsFormat(), and lldb::SBFrame::GetDescriptionWithFormat().
void StackFrame::DumpUsingSettingsFormat | ( | Stream * | strm, |
bool | show_unique = false , |
||
const char * | frame_marker = nullptr |
||
) |
Print a description for this frame using the frame-format formatter settings.
If the current frame-format settings are invalid, then the default formatter will be used (see StackFrame::Dump()).
[in] | strm | The Stream to print the description to. |
[in] | show_unique | Whether to print the function arguments or not for backtrace unique. |
[in] | frame_marker | Optional string that will be prepended to the frame output description. |
Definition at line 1891 of file StackFrame.cpp.
References Dump(), DumpUsingFormat(), lldb_private::Stream::EOL(), lldb_private::Target::GetDebugger(), lldb_private::Debugger::GetFrameFormat(), lldb_private::Debugger::GetFrameFormatUnique(), and lldb_private::ExecutionContext::GetTargetPtr().
Referenced by CommandObjectFrameInfo::DoExecute(), lldb_private::StackFrameList::Dump(), lldb::SBFrame::EvaluateExpression(), lldb::SBFrame::GetDescription(), and GetStatus().
lldb::ValueObjectSP StackFrame::FindVariable | ( | ConstString | name | ) |
Attempt to reconstruct the ValueObject for a variable with a given name from within the current StackFrame, within the current block.
The search for the variable starts in the deepest block corresponding to the current PC in the stack frame and traverse through all parent blocks stopping at inlined function boundaries.
[in] | name | The name of the variable. |
Definition at line 1813 of file StackFrame.cpp.
References lldb_private::Block::AppendVariables(), lldb_private::SymbolContext::block, CalculateProcess(), CalculateTarget(), lldb::eNoDynamicValues, lldb_private::VariableList::FindVariable(), GetSymbolContext(), and GetValueObjectForFrameVariable().
Referenced by lldb::SBFrame::FindVariable(), and lldb_private::ClangExpressionUtil::GetLambdaValueObject().
|
inline |
Query this frame to find what frame it is in this Thread's StackFrameList, not counting inlined frames.
Definition at line 448 of file StackFrame.h.
References m_concrete_frame_index.
Referenced by ThreadElfCore::CreateRegisterContextForFrame(), ThreadFreeBSDKernel::CreateRegisterContextForFrame(), ThreadMachCore::CreateRegisterContextForFrame(), ThreadKDP::CreateRegisterContextForFrame(), lldb_private::ScriptedThread::CreateRegisterContextForFrame(), ThreadMemory::CreateRegisterContextForFrame(), lldb_private::process_gdb_remote::ThreadGDBRemote::CreateRegisterContextForFrame(), lldb_private::minidump::ThreadMinidump::CreateRegisterContextForFrame(), lldb_private::TargetThreadWindows::CreateRegisterContextForFrame(), lldb_private::UnwindLLDB::DoCreateRegisterContextForFrame(), lldb_private::HistoryUnwind::DoCreateRegisterContextForFrame(), and lldb_private::StackFrameList::SynthesizeTailCallFrames().
const char * StackFrame::GetDisplayFunctionName | ( | ) |
Get the frame's demangled display name.
///
Definition at line 1273 of file StackFrame.cpp.
References lldb_private::ConstString::AsCString(), lldb_private::SymbolContext::block, lldb_private::SymbolContext::function, lldb_private::Block::GetContainingInlinedBlock(), lldb_private::ConstString::GetCString(), lldb_private::InlineFunctionInfo::GetDisplayName(), lldb_private::Function::GetDisplayName(), lldb_private::Symbol::GetDisplayName(), lldb_private::Block::GetInlinedFunctionInfo(), GetSymbolContext(), and lldb_private::SymbolContext::symbol.
Referenced by lldb::SBFrame::GetDisplayFunctionName().
DWARFExpressionList * StackFrame::GetFrameBaseExpression | ( | Status * | error_ptr | ) |
Get the DWARFExpressionList corresponding to the Canonical Frame Address.
Often a register (bp), but sometimes a register + offset.
[out] | error_ptr | If there is an error determining the CFA address, this may contain a string explaining the failure. |
Definition at line 1147 of file StackFrame.cpp.
References lldb_private::Status::FromErrorString(), lldb_private::SymbolContext::function, lldb_private::Function::GetFrameBaseExpression(), and m_sc.
Referenced by lldb_private::DWARFExpression::MatchesOperand().
llvm::Error StackFrame::GetFrameBaseValue | ( | Scalar & | value | ) |
Return the Canonical Frame Address (DWARF term) for this frame.
The CFA is typically the value of the stack pointer register before the call invocation is made. It will not change during the lifetime of a stack frame. It is often not the same thing as the frame pointer register value.
Live StackFrames will always have a CFA but other types of frames may not be able to supply one.
[out] | value | The address of the CFA for this frame, if available. |
Definition at line 1106 of file StackFrame.cpp.
References lldb_private::Scalar::Clear(), lldb_private::Status::Clear(), lldb_private::DWARFExpressionList::Evaluate(), lldb_private::Status::Fail(), lldb_private::Status::FromError(), lldb_private::Status::FromErrorString(), lldb_private::SymbolContext::function, lldb_private::Function::GetAddressRange(), lldb_private::AddressRange::GetBaseAddress(), lldb_private::Function::GetFrameBaseExpression(), lldb_private::Address::GetLoadAddress(), lldb_private::ExecutionContext::GetTargetPtr(), GOT_FRAME_BASE, lldb_private::DWARFExpressionList::IsAlwaysValidSingleExpr(), lldb_private::Flags::IsClear(), LLDB_INVALID_ADDRESS, m_cfa_is_valid, m_flags, m_frame_base, m_frame_base_error, m_mutex, m_sc, lldb_private::Flags::Set(), and lldb_private::Status::ToError().
Referenced by lldb_private::DWARFExpression::Evaluate().
Block * StackFrame::GetFrameBlock | ( | ) |
Get the current lexical scope block for this StackFrame, if possible.
If debug information is available for this stack frame, return a pointer to the innermost lexical Block that the frame is currently executing.
Definition at line 276 of file StackFrame.cpp.
References lldb_private::SymbolContext::block, lldb_private::SymbolContext::function, lldb_private::Function::GetBlock(), lldb_private::Block::GetContainingInlinedBlock(), GetSymbolContext(), lldb_private::Flags::IsClear(), m_flags, and m_sc.
Referenced by lldb::SBFrame::GetFrameBlock(), GetModuleConfig(), GetStackID(), lldb_private::ClangExpressionSourceCode::GetText(), GetVariableList(), GuessValueForRegisterAndOffset(), and SetupDeclVendor().
const Address & StackFrame::GetFrameCodeAddress | ( | ) |
Get an Address for the current pc value in this StackFrame.
May not be the same as the actual PC value for inlined stack frames.
Definition at line 191 of file StackFrame.cpp.
References lldb_private::eCode, lldb_private::Address::GetModule(), lldb_private::Address::GetOffset(), GetThread(), lldb_private::Flags::IsClear(), lldb_private::Address::IsSectionOffset(), m_flags, m_frame_code_addr, m_mutex, m_sc, lldb_private::SymbolContext::module_sp, RESOLVED_FRAME_CODE_ADDR, lldb_private::Flags::Set(), and lldb_private::Address::SetOpcodeLoadAddress().
Referenced by lldb_private::plugin::dwarf::SymbolFileDWARFDebugMap::CalculateFrameVariableError(), lldb_private::Disassembler::Disassemble(), lldb_private::HistoryUnwind::DoCreateRegisterContextForFrame(), CommandObjectThreadStepWithTypeAndScope::DoExecute(), Dump(), lldb_private::FormatEntity::Format(), lldb_private::CommandObjectDisassemble::GetCurrentFunctionRanges(), GetFrameCodeAddressForSymbolication(), lldb::SBFrame::GetPC(), lldb::SBFrame::GetPCAddress(), lldb_private::CommandObjectDisassemble::GetPCRanges(), GetStatus(), GetSymbolContext(), GuessValueForAddress(), GuessValueForRegisterAndOffset(), lldb_private::Variable::IsInScope(), and lldb_private::Disassembler::PrintInstructions().
Address StackFrame::GetFrameCodeAddressForSymbolication | ( | ) |
Get the current code Address suitable for symbolication, may not be the same as GetFrameCodeAddress().
For a frame in the middle of the stack, the return-pc is the current code address, but for symbolication purposes the return address after a noreturn call may point to the next function, a DWARF location list entry that is a completely different code path, or the wrong source line.
The address returned should be used for symbolication (source line, block, function, DWARF location entry selection) but should NOT be shown to the user. It may not point to an actual instruction boundary.
Definition at line 223 of file StackFrame.cpp.
References CalculateTarget(), lldb_private::eCode, GetFrameCodeAddress(), lldb_private::Address::GetOffset(), lldb_private::Address::GetOpcodeLoadAddress(), lldb_private::Address::IsValid(), m_behaves_like_zeroth_frame, lldb_private::Address::SetOffset(), and lldb_private::Address::SetOpcodeLoadAddress().
Referenced by GetSymbolContext(), lldb_private::Variable::LocationIsValidForFrame(), and lldb_private::DWARFExpressionList::MatchesOperand().
uint32_t StackFrame::GetFrameIndex | ( | ) | const |
Query this frame to find what frame it is in this Thread's StackFrameList.
Definition at line 176 of file StackFrame.cpp.
References GetThread(), and m_frame_index.
Referenced by CommandObjectTargetVariable::DoExecute(), Evaluate_DW_OP_entry_value(), lldb_private::FormatEntity::Format(), and lldb::SBFrame::GetFrameID().
const char * StackFrame::GetFunctionName | ( | ) |
Get the frame's demangled name.
///
Definition at line 1246 of file StackFrame.cpp.
References lldb_private::ConstString::AsCString(), lldb_private::SymbolContext::block, lldb_private::SymbolContext::function, lldb_private::Block::GetContainingInlinedBlock(), lldb_private::ConstString::GetCString(), lldb_private::Block::GetInlinedFunctionInfo(), lldb_private::InlineFunctionInfo::GetName(), lldb_private::Function::GetName(), lldb_private::Symbol::GetName(), GetSymbolContext(), and lldb_private::SymbolContext::symbol.
Referenced by lldb::SBFrame::GetFunctionName().
VariableListSP StackFrame::GetInScopeVariableList | ( | bool | get_file_globals, |
bool | must_have_valid_location = false |
||
) |
Retrieve the list of variables that are in scope at this StackFrame's pc.
A frame that is not live may return an empty VariableListSP for a given pc value even though variables would be available at this point if it were a live stack frame.
[in] | get_file_globals | Whether to also retrieve compilation-unit scoped variables that are visible to the entire compilation unit (e.g. file static in C, globals that are homed in this CU). |
Definition at line 476 of file StackFrame.cpp.
References lldb_private::Block::AppendVariables(), lldb_private::SymbolContext::block, lldb_private::SymbolContext::comp_unit, GetSymbolContext(), lldb_private::CompileUnit::GetVariableList(), IsHistorical(), lldb_private::Variable::IsInScope(), lldb_private::Variable::LocationIsValidForFrame(), m_mutex, and m_sc.
Referenced by lldb_private::ClangExpressionSourceCode::AddLocalVariableDecls(), LegacyGetValueForVariableExpressionPath(), and lldb_private::ClangExpressionDeclMap::LookupLocalVariable().
SourceLanguage StackFrame::GetLanguage | ( | ) |
Query this frame to determine what the default language should be when parsing expressions given the execution context.
Definition at line 1299 of file StackFrame.cpp.
References lldb_private::SymbolContext::comp_unit, lldb_private::CompileUnit::GetLanguage(), and GetSymbolContext().
Referenced by lldb::SBFrame::EvaluateExpression(), GetLanguageSpecificData(), and GuessLanguage().
StructuredData::ObjectSP StackFrame::GetLanguageSpecificData | ( | ) |
Language plugins can use this API to report language-specific runtime information about this compile unit, such as additional language version details or feature flags.
Definition at line 1234 of file StackFrame.cpp.
References lldb_private::SourceLanguage::AsLanguageType(), CalculateProcess(), GetLanguage(), and GetSymbolContext().
Referenced by lldb::SBFrame::GetLanguageSpecificData().
RecognizedStackFrameSP StackFrame::GetRecognizedFrame | ( | ) |
Definition at line 2066 of file StackFrame.cpp.
References CalculateStackFrame(), GetThread(), m_frame_recognizer_generation, and m_recognized_frame_sp.
Referenced by CommandObjectFrameVariable::DoExecute(), lldb::SBFrame::GetVariables(), and IsHidden().
RegisterContextSP StackFrame::GetRegisterContext | ( | ) |
Get the RegisterContext for this frame, if possible.
Returns a shared pointer to the RegisterContext for this stack frame. Only a live StackFrame object will be able to return a RegisterContext - callers must be prepared for an empty shared pointer being returned.
Even a live StackFrame RegisterContext may not be able to provide all registers. Only the currently executing frame (frame 0) can reliably provide every register in the register context.
Definition at line 1158 of file StackFrame.cpp.
References GetThread(), m_mutex, and m_reg_context_sp.
Referenced by lldb_private::OptionArgParser::DoToAddress(), DumpRegister(), lldb_private::DWARFExpressionList::Evaluate(), lldb_private::DWARFExpression::Evaluate(), lldb::SBFrame::FindRegister(), lldb::SBFrame::FindValue(), lldb::SBFrame::GetRegisters(), GuessValueForAddress(), lldb_private::DWARFExpression::MatchesOperand(), lldb_private::DWARFExpressionList::MatchesOperand(), lldb_private::EmulateInstruction::ReadRegisterFrame(), lldb_private::ThreadPlanStepInstruction::ShouldStop(), lldb_private::StackFrameList::SynthesizeTailCallFrames(), lldb_private::ValueObjectRegisterSet::UpdateValue(), and lldb_private::EmulateInstruction::WriteRegisterFrame().
|
inline |
Definition at line 240 of file StackFrame.h.
References m_reg_context_sp.
Referenced by lldb_private::FormatEntity::Format().
StackID & StackFrame::GetStackID | ( | ) |
Definition at line 146 of file StackFrame.cpp.
References GetFrameBlock(), GetSymbolContext(), lldb_private::StackID::GetSymbolContextScope(), lldb_private::Flags::IsClear(), m_flags, m_id, m_mutex, m_sc, RESOLVED_FRAME_ID_SYMBOL_SCOPE, lldb_private::Flags::Set(), SetSymbolContextScope(), and lldb_private::SymbolContext::symbol.
Referenced by lldb_private::StackFrameList::Dump(), lldb_private::DWARFExpression::Evaluate(), lldb_private::StackFrameList::FetchFramesUpTo(), lldb::SBFrame::GetCFA(), lldb_private::Thread::SetSelectedFrame(), lldb_private::ThreadPlanStepInstruction::ShouldStop(), UpdateCurrentFrameFromPreviousFrame(), and UpdatePreviousFrameFromCurrentFrame().
bool StackFrame::GetStatus | ( | Stream & | strm, |
bool | show_frame_info, | ||
bool | show_source, | ||
bool | show_unique = false , |
||
const char * | frame_marker = nullptr |
||
) |
Print a description of this stack frame and/or the source context/assembly for this stack frame.
[in] | strm | The Stream to send the output to. |
[in] | show_frame_info | If true, print the frame info by calling DumpUsingSettingsFormat(). |
[in] | show_source | If true, print source or disassembly as per the user's settings. |
[in] | show_unique | If true, print using backtrace unique style, without function arguments as per the user's settings. |
[in] | frame_marker | Passed to DumpUsingSettingsFormat() for the frame info printing. |
Definition at line 1985 of file StackFrame.cpp.
References lldb_private::LineEntry::column, lldb_private::SymbolContext::comp_unit, lldb_private::Disassembler::Disassemble(), lldb_private::SourceManager::DisplaySourceLinesWithLineNumbers(), DumpUsingSettingsFormat(), lldb_private::Disassembler::eOptionMarkPCAddress, lldb_private::Debugger::eStopDisassemblyTypeAlways, lldb_private::Debugger::eStopDisassemblyTypeNever, lldb_private::Debugger::eStopDisassemblyTypeNoDebugInfo, lldb_private::Debugger::eStopDisassemblyTypeNoSource, lldb_private::LineEntry::file_sp, lldb_private::SymbolContext::function, lldb_private::Target::GetArchitecture(), lldb_private::Target::GetDebugger(), lldb_private::TargetProperties::GetDisassemblyCPU(), lldb_private::TargetProperties::GetDisassemblyFeatures(), lldb_private::Debugger::GetDisassemblyLineCount(), GetFrameCodeAddress(), lldb_private::Target::GetSourceManager(), lldb_private::Function::GetStartLineSourceInfo(), lldb_private::Debugger::GetStopDisassemblyDisplay(), lldb_private::Debugger::GetStopSourceLineCount(), GetSymbolContext(), lldb_private::ExecutionContext::GetTargetPtr(), lldb_private::Stream::Indent(), lldb_private::Disassembler::Limit::Instructions, lldb_private::LineEntry::IsValid(), lldb_private::LineEntry::line, lldb_private::SymbolContext::line_entry, and m_sc.
const SymbolContext & StackFrame::GetSymbolContext | ( | lldb::SymbolContextItem | resolve_scope | ) |
Provide a SymbolContext for this StackFrame's current pc value.
The StackFrame maintains this SymbolContext and adds additional information to it on an as-needed basis. This helps to avoid different functions looking up symbolic information for a given pc value multiple times.
[in] | resolve_scope | Flags from the SymbolContextItem enumerated type which specify what type of symbol context is needed by this caller. |
Definition at line 301 of file StackFrame.cpp.
References lldb_private::LineEntry::ApplyFileMappings(), lldb_private::SymbolContext::block, CalculateTarget(), lldb_private::SymbolContext::comp_unit, lldb_private::SymbolContext::function, lldb_private::Flags::Get(), GetFrameCodeAddress(), GetFrameCodeAddressForSymbolication(), lldb_private::Flags::IsClear(), lldb_private::LineEntry::IsValid(), lldb_private::SymbolContext::line_entry, m_flags, m_mutex, m_sc, lldb_private::SymbolContext::module_sp, RESOLVED_FRAME_CODE_ADDR, lldb_private::Flags::Set(), lldb_private::SymbolContext::symbol, and lldb_private::SymbolContext::target_sp.
Referenced by CommandObjectTargetSymbolsAdd::AddSymbolsForFrame(), lldb_private::plugin::dwarf::SymbolFileDWARF::CalculateFrameVariableError(), lldb_private::ThreadPlanShouldStopHere::DefaultShouldStopHereCallback(), lldb_private::ThreadPlanStepInRange::DefaultShouldStopHereCallback(), lldb_private::ThreadPlanShouldStopHere::DefaultStepFromHereCallback(), lldb_private::Disassembler::Disassemble(), CommandObjectTargetVariable::DoExecute(), CommandObjectThreadJump::DoExecute(), CommandObjectFrameVariable::DoExecute(), CommandObjectMemoryRead::DoExecute(), CommandObjectThreadStepWithTypeAndScope::DoExecute(), CommandObjectThreadUntil::DoExecute(), Dump(), CommandObjectSourceInfo::DumpLinesForFrame(), DumpUsingFormat(), Evaluate_DW_OP_entry_value(), lldb_private::Target::StopHook::ExecutionContextPasses(), lldb_private::ClangExpressionDeclMap::FindExternalVisibleDecls(), lldb::SBFrame::FindValue(), FindVariable(), lldb_private::StringSummaryFormat::FormatObject(), lldb_private::ThreadPlanStepInRange::FrameMatchesAvoidCriteria(), lldb_private::Thread::FrameSelectedCallback(), lldb::SBFrame::GetBlock(), lldb::SBFrame::GetCompileUnit(), lldb_private::CommandObjectDisassemble::GetCurrentFunctionRanges(), lldb_private::CommandObjectDisassemble::GetCurrentLineRanges(), CommandObjectBreakpointSet::GetDefaultFile(), GetDisplayFunctionName(), GetFrameBlock(), lldb::SBFrame::GetFunction(), GetFunctionName(), GetInScopeVariableList(), GetLanguage(), GetLanguageSpecificData(), lldb::SBFrame::GetLineEntry(), lldb::SBFrame::GetModule(), GetStackID(), GetStatus(), DynamicLoaderHexagonDYLD::GetStepThroughTrampolinePlan(), lldb_private::DynamicLoaderDarwin::GetStepThroughTrampolinePlan(), DynamicLoaderPOSIXDYLD::GetStepThroughTrampolinePlan(), lldb::SBFrame::GetSymbol(), lldb_private::ClangExpressionSourceCode::GetText(), lldb_private::ClangExpressionDeclMap::GetTypeSystemClang(), GetVariableList(), GuessLanguage(), HasDebugInformation(), lldb_private::ThreadPlanStepRange::InRange(), IsInlined(), lldb_private::Variable::IsInScope(), lldb_private::Thread::JumpToLine(), LegacyGetValueForVariableExpressionPath(), lldb_private::Variable::LocationIsValidForFrame(), lldb_private::ClangExpressionDeclMap::LookupFunction(), lldb_private::ClangExpressionDeclMap::LookUpLldbClass(), lldb_private::ClangExpressionDeclMap::LookUpLldbObjCClass(), lldb_private::DWARFExpressionList::MatchesOperand(), lldb_private::ClangUserExpression::ScanContext(), lldb_private::StackFrameList::SynthesizeTailCallFrames(), and lldb_private::ClangExpressionDeclMap::WillParse().
|
inline |
Definition at line 128 of file StackFrame.h.
References m_thread_wp.
Referenced by CalculateProcess(), CalculateTarget(), CalculateThread(), ChangePC(), lldb_private::HistoryUnwind::DoCreateRegisterContextForFrame(), GetFrameCodeAddress(), GetFrameIndex(), GetRecognizedFrame(), GetRegisterContext(), and UpdatePreviousFrameFromCurrentFrame().
ValueObjectSP StackFrame::GetValueForVariableExpressionPath | ( | llvm::StringRef | var_expr, |
lldb::DynamicValueType | use_dynamic, | ||
uint32_t | options, | ||
lldb::VariableSP & | var_sp, | ||
Status & | error | ||
) |
Create a ValueObject for a variable name / pathname, possibly including simple dereference/child selection syntax.
[in] | var_expr | The string specifying a variable to base the VariableObject off of. |
[in] | use_dynamic | Whether the correct dynamic type of an object pointer should be determined before creating the object, or if the static type is sufficient. One of the DynamicValueType enumerated values. |
[in] | options | An unsigned integer of flags, values from StackFrame::ExpressionPathOption enum. |
[in] | var_sp | A VariableSP that will be set to the variable described in the var_expr path. |
[in] | error | Record any errors encountered while evaluating var_expr. |
Definition at line 509 of file StackFrame.cpp.
References CalculateExecutionContext(), DILGetValueForVariableExpressionPath(), error(), lldb_private::ExecutionContext::GetTargetRef(), lldb_private::TargetProperties::GetUseDIL(), and LegacyGetValueForVariableExpressionPath().
Referenced by CommandObjectFrameVariable::DoExecute(), lldb_private::CommandObjectDWIMPrint::DoExecute(), and lldb::SBFrame::GetValueForVariablePath().
ValueObjectSP StackFrame::GetValueObjectForFrameVariable | ( | const lldb::VariableSP & | variable_sp, |
lldb::DynamicValueType | use_dynamic | ||
) |
Create a ValueObject for a given Variable in this StackFrame.
[in] | variable_sp | The Variable to base this ValueObject on |
[in] | use_dynamic | Whether the correct dynamic type of the variable should be determined before creating the ValueObject, or if the static type is sufficient. One of the DynamicValueType enumerated values. |
Definition at line 1174 of file StackFrame.cpp.
References lldb_private::ValueObjectVariable::Create(), lldb::eNoDynamicValues, lldb_private::VariableList::FindIndexForVariable(), lldb_private::VariableList::GetSize(), lldb_private::ValueObjectList::GetSize(), lldb_private::ValueObjectList::GetValueObjectAtIndex(), GetVariableList(), IsHistorical(), m_mutex, m_variable_list_value_objects, lldb_private::ValueObjectList::Resize(), and lldb_private::ValueObjectList::SetValueObjectAtIndex().
Referenced by CommandObjectFrameVariable::DoExecute(), lldb::SBFrame::FindValue(), FindVariable(), lldb::SBFrame::GetVariables(), and LegacyGetValueForVariableExpressionPath().
VariableList * StackFrame::GetVariableList | ( | bool | get_file_globals, |
Status * | error_ptr | ||
) |
Retrieve the list of variables that are in scope at this StackFrame's pc.
A frame that is not live may return an empty VariableList for a given pc value even though variables would be available at this point if it were a live stack frame.
[in] | get_file_globals | Whether to also retrieve compilation-unit scoped variables that are visible to the entire compilation unit (e.g. file static in C, globals that are homed in this CU). |
[out] | error_ptr | If there is an error in the debug information that prevents variables from being fetched. |
Definition at line 425 of file StackFrame.cpp.
References lldb_private::Block::AppendBlockVariables(), lldb_private::SymbolContext::comp_unit, GetFrameBlock(), lldb_private::SymbolFile::GetFrameVariableError(), GetSymbolContext(), lldb_private::CompileUnit::GetVariableList(), lldb_private::Flags::IsClear(), m_flags, m_mutex, m_sc, m_variable_list_sp, lldb_private::SymbolContext::module_sp, RESOLVED_GLOBAL_VARIABLES, RESOLVED_VARIABLES, and lldb_private::Flags::Set().
Referenced by CommandObjectFrameVariable::DoExecute(), lldb::SBFrame::FindValue(), GetValueObjectForFrameVariable(), lldb::SBFrame::GetVariables(), GuessValueForRegisterAndOffset(), lldb_private::ClangExpressionDeclMap::LookUpLldbClass(), lldb_private::ClangExpressionDeclMap::LookUpLldbObjCClass(), and PrivateAutoComplete().
SourceLanguage StackFrame::GuessLanguage | ( | ) |
Similar to GetLanguage(), but is allowed to take a potentially incorrect guess if exact information is not available.
Definition at line 1306 of file StackFrame.cpp.
References lldb::eLanguageTypeUnknown, lldb_private::SymbolContext::function, GetLanguage(), lldb_private::Symbol::GetMangled(), lldb_private::Function::GetMangled(), GetSymbolContext(), lldb_private::Mangled::GuessLanguage(), and lldb_private::SymbolContext::symbol.
Referenced by CommandObjectTypeLookup::CommandObjectTypeLookup(), lldb_private::CommandObjectDWIMPrint::DoExecute(), and lldb::SBFrame::GuessLanguage().
lldb::ValueObjectSP StackFrame::GuessValueForAddress | ( | lldb::addr_t | addr | ) |
Attempt to econstruct the ValueObject for a given raw address touched by the current instruction.
The ExpressionPath should indicate how to get to this value using "frame variable."
[in] | addr | The raw address. |
Definition at line 1397 of file StackFrame.cpp.
References CalculateTarget(), lldb_private::ValueObjectMemory::Create(), lldb_private::Disassembler::DisassembleRange(), lldb::eBasicTypeChar, lldb::eLanguageTypeC, lldb_private::AddressRange::GetBaseAddress(), lldb_private::CompilerType::GetBasicTypeFromAST(), GetFrameCodeAddress(), lldb_private::GetLog(), lldb_private::ArchSpec::GetMaximumOpcodeByteSize(), lldb_private::CompilerType::GetPointerType(), GetRegisterContext(), GuessValueForRegisterAndOffset(), lldb_private::Instruction::Operand::Immediate, LLDB_LOG_ERROR, lldb_private::Instruction::Operand::Register, lldb_private::AddressRange::SetByteSize(), and lldb_private::Thread.
lldb::ValueObjectSP StackFrame::GuessValueForRegisterAndOffset | ( | ConstString | reg, |
int64_t | offset | ||
) |
Attempt to reconstruct the ValueObject for the address contained in a given register plus an offset.
The ExpressionPath should indicate how to get to this value using "frame variable."
[in] | reg | The name of the register. |
[in] | offset | The offset from the register. Particularly important for sp... |
Definition at line 1762 of file StackFrame.cpp.
References lldb_private::Block::CalculateSymbolContextFunction(), CalculateTarget(), lldb_private::Disassembler::DisassembleRange(), lldb_private::Function::GetAddressRange(), lldb_private::AddressRange::GetBaseAddress(), lldb_private::AddressRange::GetByteSize(), lldb_private::Address::GetFileAddress(), GetFrameBlock(), GetFrameCodeAddress(), and GetVariableList().
Referenced by GuessValueForAddress().
|
protected |
Definition at line 1975 of file StackFrame.cpp.
References lldb_private::ValueObjectList::GetSize(), lldb_private::StreamString::GetString(), m_disassembly, m_variable_list_sp, and m_variable_list_value_objects.
bool StackFrame::HasDebugInformation | ( | ) |
Determine whether this StackFrame has debug information available or not.
Definition at line 1168 of file StackFrame.cpp.
References GetSymbolContext(), lldb_private::LineEntry::IsValid(), lldb_private::SymbolContext::line_entry, and m_sc.
Referenced by lldb_private::ThreadPlanShouldStopHere::DefaultShouldStopHereCallback(), CommandObjectThreadStepWithTypeAndScope::DoExecute(), CommandObjectThreadUntil::DoExecute(), CommandObjectSourceInfo::DumpLinesForFrame(), lldb_private::FormatEntity::Format(), lldb_private::Thread::FrameSelectedCallback(), and CommandObjectBreakpointSet::GetDefaultFile().
bool StackFrame::IsArtificial | ( | ) | const |
Query whether this frame is artificial (e.g a synthesized result of inferring missing tail call frames from a backtrace).
Artificial frames may have limited support for inspecting variables.
Definition at line 1224 of file StackFrame.cpp.
References Artificial, and m_stack_frame_kind.
bool StackFrame::IsHidden | ( | ) |
Query whether this frame should be hidden from backtraces.
Frame recognizers can customize this behavior and hide distracting system implementation details this way.
Definition at line 1228 of file StackFrame.cpp.
References GetRecognizedFrame().
bool StackFrame::IsHistorical | ( | ) | const |
Query whether this frame is part of a historical backtrace.
Definition at line 1220 of file StackFrame.cpp.
References History, and m_stack_frame_kind.
Referenced by ChangePC(), GetInScopeVariableList(), GetValueObjectForFrameVariable(), LegacyGetValueForVariableExpressionPath(), and StackFrame().
bool StackFrame::IsInlined | ( | ) |
Query whether this frame is a concrete frame on the call stack, or if it is an inlined frame derived from the debug information and presented by the debugger.
Definition at line 1212 of file StackFrame.cpp.
References lldb_private::SymbolContext::block, lldb_private::Block::GetContainingInlinedBlock(), GetSymbolContext(), and m_sc.
Referenced by lldb::SBFrame::IsInlined().
|
private |
Private methods, called from GetValueForVariableExpressionPath.
See that method for documentation of parameters and return value.
Definition at line 532 of file StackFrame.cpp.
References eExpressionPathOptionCheckPtrVsMember, eExpressionPathOptionsAllowDirectIVarAccess, eExpressionPathOptionsInspectAnonymousUnions, eExpressionPathOptionsNoFragileObjcIvar, eExpressionPathOptionsNoSyntheticChildren, lldb::eLanguageTypeObjC, lldb::eNoDynamicValues, error(), lldb_private::Status::Fail(), lldb_private::VariableList::FindVariable(), lldb_private::Status::FromErrorString(), lldb_private::Status::FromErrorStringWithFormat(), lldb_private::Status::FromErrorStringWithFormatv(), lldb_private::ConstString::GetCString(), lldb_private::StreamString::GetData(), lldb_private::Type::GetForwardCompilerType(), GetInScopeVariableList(), lldb_private::SymbolContext::GetInstanceVariableName(), lldb_private::ConstString::GetLength(), GetSymbolContext(), GetValueObjectForFrameVariable(), lldb_private::CompilerType::IsAnonymousType(), IsHistorical(), and m_sc.
Referenced by DILGetValueForVariableExpressionPath(), and GetValueForVariableExpressionPath().
|
privatedelete |
|
inline |
Set this frame's synthetic frame index.
Definition at line 438 of file StackFrame.h.
References m_frame_index.
Referenced by lldb_private::StackFrameList::SynthesizeTailCallFrames().
|
protected |
Definition at line 185 of file StackFrame.cpp.
References m_flags, m_id, m_mutex, RESOLVED_FRAME_ID_SYMBOL_SCOPE, lldb_private::Flags::Set(), and lldb_private::StackID::SetSymbolContextScope().
Referenced by GetStackID().
|
protected |
Definition at line 1937 of file StackFrame.cpp.
References lldb_private::StreamString::Clear(), GetStackID(), lldb_private::StreamString::GetString(), m_disassembly, m_mutex, m_variable_list_sp, m_variable_list_value_objects, lldb_private::Stream::PutCString(), and lldb_private::ValueObjectList::Swap().
|
protected |
Definition at line 1949 of file StackFrame.cpp.
References lldb_private::Scalar::Clear(), lldb_private::Status::Clear(), lldb_private::Flags::Clear(), lldb_private::SymbolContext::comp_unit, lldb_private::SymbolContext::function, lldb_private::StackID::GetPC(), lldb_private::SymbolContext::GetResolvedMask(), GetStackID(), GetThread(), GOT_FRAME_BASE, m_behaves_like_zeroth_frame, m_concrete_frame_index, m_flags, m_frame_base, m_frame_base_error, m_frame_code_addr, m_frame_index, m_id, m_mutex, m_reg_context_sp, m_sc, lldb_private::SymbolContext::module_sp, lldb_private::Flags::Set(), lldb_private::StackID::SetPC(), and lldb_private::SymbolContext::target_sp.
Referenced by lldb_private::StackFrameList::FetchFramesUpTo().
|
friend |
Definition at line 529 of file StackFrame.h.
|
private |
Whether this frame behaves like the zeroth frame, in the sense that its pc value might not immediately follow a call (and thus might be the first address of its function).
True for actual frame zero as well as any other frame with the same trait.
Definition at line 575 of file StackFrame.h.
Referenced by GetFrameCodeAddressForSymbolication(), and UpdatePreviousFrameFromCurrentFrame().
|
private |
Does this frame have a CFA? Different from CFA == LLDB_INVALID_ADDRESS.
Definition at line 568 of file StackFrame.h.
Referenced by GetFrameBaseValue(), and StackFrame().
|
private |
Definition at line 554 of file StackFrame.h.
Referenced by GetConcreteFrameIndex(), and UpdatePreviousFrameFromCurrentFrame().
|
private |
Definition at line 580 of file StackFrame.h.
Referenced by Disassemble(), HasCachedData(), and UpdateCurrentFrameFromPreviousFrame().
|
private |
Definition at line 563 of file StackFrame.h.
Referenced by ChangePC(), GetFrameBaseValue(), GetFrameBlock(), GetFrameCodeAddress(), GetStackID(), GetSymbolContext(), GetVariableList(), SetSymbolContextScope(), StackFrame(), and UpdatePreviousFrameFromCurrentFrame().
|
private |
Definition at line 564 of file StackFrame.h.
Referenced by GetFrameBaseValue(), and UpdatePreviousFrameFromCurrentFrame().
|
private |
Definition at line 565 of file StackFrame.h.
Referenced by GetFrameBaseValue(), and UpdatePreviousFrameFromCurrentFrame().
|
private |
The frame code address (might not be the same as the actual PC for inlined frames) as a section/offset address.
Definition at line 561 of file StackFrame.h.
Referenced by ChangePC(), GetFrameCodeAddress(), and UpdatePreviousFrameFromCurrentFrame().
|
private |
Definition at line 553 of file StackFrame.h.
Referenced by Dump(), GetFrameIndex(), SetFrameIndex(), StackFrame(), and UpdatePreviousFrameFromCurrentFrame().
|
private |
Definition at line 566 of file StackFrame.h.
Referenced by GetRecognizedFrame().
|
private |
Definition at line 556 of file StackFrame.h.
Referenced by GetStackID(), SetSymbolContextScope(), StackFrame(), and UpdatePreviousFrameFromCurrentFrame().
|
private |
Definition at line 581 of file StackFrame.h.
Referenced by ChangePC(), Disassemble(), GetFrameBaseValue(), GetFrameCodeAddress(), GetInScopeVariableList(), GetRegisterContext(), GetStackID(), GetSymbolContext(), GetValueObjectForFrameVariable(), GetVariableList(), SetSymbolContextScope(), UpdateCurrentFrameFromPreviousFrame(), and UpdatePreviousFrameFromCurrentFrame().
|
private |
Definition at line 579 of file StackFrame.h.
Referenced by GetRecognizedFrame().
|
private |
Definition at line 555 of file StackFrame.h.
Referenced by GetRegisterContext(), GetRegisterContextSP(), and UpdatePreviousFrameFromCurrentFrame().
|
private |
Definition at line 562 of file StackFrame.h.
Referenced by ChangePC(), Dump(), DumpUsingFormat(), GetFrameBaseExpression(), GetFrameBaseValue(), GetFrameBlock(), GetFrameCodeAddress(), GetInScopeVariableList(), GetStackID(), GetStatus(), GetSymbolContext(), GetVariableList(), HasDebugInformation(), IsInlined(), LegacyGetValueForVariableExpressionPath(), StackFrame(), and UpdatePreviousFrameFromCurrentFrame().
|
private |
Definition at line 569 of file StackFrame.h.
Referenced by IsArtificial(), and IsHistorical().
|
private |
|
private |
Definition at line 576 of file StackFrame.h.
Referenced by GetVariableList(), HasCachedData(), and UpdateCurrentFrameFromPreviousFrame().
|
private |
Value objects for each variable in m_variable_list_sp.
Definition at line 578 of file StackFrame.h.
Referenced by GetValueObjectForFrameVariable(), HasCachedData(), and UpdateCurrentFrameFromPreviousFrame().