|
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 , Synthetic } |
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 artificial, 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 |
| virtual StackID & | GetStackID () |
| virtual const Address & | GetFrameCodeAddress () |
| Get an Address for the current pc value in this StackFrame. | |
| virtual Address | GetFrameCodeAddressForSymbolication () |
| Get the current code Address suitable for symbolication, may not be the same as GetFrameCodeAddress(). | |
| virtual bool | ChangePC (lldb::addr_t pc) |
| Change the pc value for a given thread. | |
| virtual const SymbolContext & | GetSymbolContext (lldb::SymbolContextItem resolve_scope) |
| Provide a SymbolContext for this StackFrame's current pc value. | |
| virtual llvm::Error | GetFrameBaseValue (Scalar &value) |
| Return the Canonical Frame Address (DWARF term) for this frame. | |
| virtual DWARFExpressionList * | GetFrameBaseExpression (Status *error_ptr) |
| Get the DWARFExpressionList corresponding to the Canonical Frame Address. | |
| virtual Block * | GetFrameBlock () |
| Get the current lexical scope block for this StackFrame, if possible. | |
| virtual lldb::RegisterContextSP | GetRegisterContext () |
| Get the RegisterContext for this frame, if possible. | |
| const lldb::RegisterContextSP & | GetRegisterContextSP () const |
| virtual VariableList * | GetVariableList (bool get_file_globals, Status *error_ptr) |
| Retrieve the list of variables whose scope either: | |
| virtual 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. | |
| virtual 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. | |
| virtual bool | HasDebugInformation () |
| Determine whether this StackFrame has debug information available or not. | |
| virtual const char * | Disassemble () |
| Return the disassembly for the instructions of this StackFrame's function as a single C string. | |
| 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 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. | |
| virtual void | Dump (Stream *strm, bool show_frame_index, bool show_fullpaths) |
| Print a description for this frame using a default format. | |
| virtual 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. | |
| virtual 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. | |
| virtual bool | IsSynthetic () const |
| Query whether this frame is synthetic. | |
| virtual bool | IsHistorical () const |
| Query whether this frame is part of a historical backtrace. | |
| virtual bool | IsArtificial () const |
| Query whether this frame is artificial (e.g a synthesized result of inferring missing tail call frames from a backtrace). | |
| virtual bool | IsHidden () |
| Query whether this frame should be hidden from backtraces. | |
| virtual 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. | |
| virtual const char * | GetFunctionName () |
| Get the frame's demangled name. | |
| virtual const char * | GetDisplayFunctionName () |
| Get the frame's demangled display name. | |
| virtual 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 frame index. | |
| virtual uint32_t | GetConcreteFrameIndex () |
| Query this frame to find what frame it is in this Thread's StackFrameList, not counting inlined frames. | |
| virtual lldb::ValueObjectSP | GetValueObjectForFrameVariable (const lldb::VariableSP &variable_sp, lldb::DynamicValueType use_dynamic) |
| Create a ValueObject for a given Variable in this StackFrame. | |
| virtual SourceLanguage | GetLanguage () |
| Query this frame to determine what the default language should be when parsing expressions given the execution context. | |
| virtual SourceLanguage | GuessLanguage () |
| Similar to GetLanguage(), but is allowed to take a potentially incorrect guess if exact information is not available. | |
| virtual lldb::ValueObjectSP | GuessValueForAddress (lldb::addr_t addr) |
| Attempt to econstruct the ValueObject for a given raw address touched by the current instruction. | |
| virtual lldb::ValueObjectSP | GuessValueForRegisterAndOffset (ConstString reg, int64_t offset) |
| Attempt to reconstruct the ValueObject for the address contained in a given register plus an offset. | |
| virtual 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. | |
| virtual lldb::RecognizedStackFrameSP | GetRecognizedFrame () |
| virtual lldb::StackFrameListSP | GetContainingStackFrameList () const |
| Get the StackFrameList that contains this frame. | |
| Public Member Functions inherited from lldb_private::ExecutionContextScope | |
| virtual | ~ExecutionContextScope ()=default |
Protected Member Functions | |
| void | SetSymbolContextScope (SymbolContextScope *symbol_scope) |
| void | UpdateCurrentFrameFromPreviousFrame (StackFrame &prev_frame) |
| void | UpdatePreviousFrameFromCurrentFrame (StackFrame &curr_frame) |
| bool | HasCachedData () const |
Protected 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_artificial |
| Is this an artificial stack frame (e.g. | |
| 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 |
| lldb::StackFrameListWP | m_frame_list_wp |
| 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 and derived classes only. | |
| uint32_t | m_frame_index |
| uint32_t | m_concrete_frame_index |
| lldb::RegisterContextSP | m_reg_context_sp |
| StackID | m_id |
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 |
Friends | |
| class | BorrowedStackFrame |
| class | StackFrameList |
| class | SyntheticStackFrameList |
| static char | ID |
| LLVM RTTI support. | |
| virtual bool | isA (const void *ClassID) const |
| static bool | classof (const StackFrame *obj) |
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 53 of file StackFrame.h.
|
strong |
Definition at line 62 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 | artificial, | ||
| 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 60 of file StackFrame.cpp.
References IsHistorical(), m_artificial, m_behaves_like_zeroth_frame, m_cfa_is_valid, m_concrete_frame_index, m_disassembly, m_flags, m_frame_base, m_frame_base_error, m_frame_code_addr, m_frame_index, m_id, m_mutex, m_recognized_frame_sp, m_reg_context_sp, m_sc, m_stack_frame_kind, m_thread_wp, m_variable_list_sp, m_variable_list_value_objects, and pc.
Referenced by lldb_private::BorrowedStackFrame::BorrowedStackFrame(), lldb_private::BorrowedStackFrame::classof(), lldb_private::ScriptedFrame::classof(), classof(), operator=(), lldb_private::ScriptedFrame::ScriptedFrame(), StackFrame(), StackFrame(), StackFrame(), SyntheticStackFrameList, UpdateCurrentFrameFromPreviousFrame(), UpdatePreviousFrameFromCurrentFrame(), and lldb_private::BorrowedStackFrame::~BorrowedStackFrame().
| 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 87 of file StackFrame.cpp.
References m_artificial, m_behaves_like_zeroth_frame, m_cfa_is_valid, m_concrete_frame_index, m_disassembly, m_flags, m_frame_base, m_frame_base_error, m_frame_code_addr, m_frame_index, m_id, m_mutex, m_recognized_frame_sp, m_reg_context_sp, m_sc, m_stack_frame_kind, m_thread_wp, m_variable_list_sp, m_variable_list_value_objects, pc, Regular, and StackFrame().
| 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 114 of file StackFrame.cpp.
References CalculateTarget(), lldb_private::Address::GetModule(), m_artificial, m_behaves_like_zeroth_frame, m_cfa_is_valid, m_concrete_frame_index, m_disassembly, m_flags, m_frame_base, m_frame_base_error, m_frame_code_addr, m_frame_index, m_id, m_mutex, m_recognized_frame_sp, m_reg_context_sp, m_sc, m_stack_frame_kind, m_thread_wp, m_variable_list_sp, m_variable_list_value_objects, Regular, and StackFrame().
|
overridedefault |
|
privatedelete |
References StackFrame().
|
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 1927 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 1915 of file StackFrame.cpp.
References GetThread().
Referenced by FindVariable(), GetLanguageSpecificData(), lldb_private::EmulateInstruction::ReadMemoryFrame(), UpdatePreviousFrameFromCurrentFrame(), and lldb_private::EmulateInstruction::WriteMemoryFrame().
|
overridevirtual |
Implements lldb_private::ExecutionContextScope.
Definition at line 1925 of file StackFrame.cpp.
Referenced by GetRecognizedFrame().
|
overridevirtual |
Implements lldb_private::ExecutionContextScope.
Definition at line 1904 of file StackFrame.cpp.
References GetThread().
Referenced by DILGetValueForVariableExpressionPath(), lldb_private::Disassembler::Disassemble(), lldb::SBFrame::EvaluateExpression(), FindVariable(), GetFrameCodeAddressForSymbolication(), GetSymbolContext(), GuessValueForAddress(), GuessValueForRegisterAndOffset(), lldb_private::Variable::LocationIsValidForFrame(), StackFrame(), and lldb_private::StackFrameList::SynthesizeTailCallFrames().
|
overridevirtual |
Implements lldb_private::ExecutionContextScope.
Definition at line 1923 of file StackFrame.cpp.
References GetThread().
|
virtual |
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. |
Reimplemented in lldb_private::BorrowedStackFrame.
Definition at line 256 of file StackFrame.cpp.
References GetThread(), IsHistorical(), m_flags, m_frame_code_addr, m_mutex, m_sc, and pc.
|
inlinestatic |
Definition at line 50 of file StackFrame.h.
References ID, isA(), and StackFrame().
|
private |
Definition at line 539 of file StackFrame.cpp.
References CalculateTarget(), lldb_private::dil::DILLexer::Create(), lldb_private::ValueObjectConstResult::Create(), eExpressionPathOptionCheckPtrVsMember, eExpressionPathOptionsNoFragileObjcIvar, eExpressionPathOptionsNoSyntheticChildren, error(), lldb_private::dil::Interpreter::Evaluate(), lldb_private::Status::FromError(), and lldb_private::dil::DILParser::Parse().
Referenced by GetValueForVariableExpressionPath().
|
virtual |
Return the disassembly for the instructions of this StackFrame's function as a single C string.
Reimplemented in lldb_private::BorrowedStackFrame.
Definition at line 270 of file StackFrame.cpp.
References lldb_private::Disassembler::Disassemble(), lldb_private::ExecutionContext::GetTargetPtr(), m_disassembly, and m_mutex.
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 1972 of file StackFrame.cpp.
References 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().
|
virtual |
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 1931 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().
|
virtual |
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 1947 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 lldb_private::StackFrameList::Dump(), lldb::SBFrame::EvaluateExpression(), lldb::SBFrame::GetDescription(), and GetStatus().
|
virtual |
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. |
Reimplemented in lldb_private::BorrowedStackFrame.
Definition at line 1869 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_private::ClangExpressionUtil::GetLambdaValueObject().
|
inlinevirtual |
Query this frame to find what frame it is in this Thread's StackFrameList, not counting inlined frames.
Reimplemented in lldb_private::BorrowedStackFrame.
Definition at line 465 of file StackFrame.h.
References m_concrete_frame_index.
Referenced by lldb_private::minidump::ThreadMinidump::CreateRegisterContextForFrame(), lldb_private::process_gdb_remote::ThreadGDBRemote::CreateRegisterContextForFrame(), lldb_private::ScriptedThread::CreateRegisterContextForFrame(), lldb_private::TargetThreadWindows::CreateRegisterContextForFrame(), lldb_private::wasm::ThreadWasm::CreateRegisterContextForFrame(), ThreadElfCore::CreateRegisterContextForFrame(), ThreadFreeBSDKernel::CreateRegisterContextForFrame(), ThreadKDP::CreateRegisterContextForFrame(), ThreadMachCore::CreateRegisterContextForFrame(), ThreadMemory::CreateRegisterContextForFrame(), lldb_private::HistoryUnwind::DoCreateRegisterContextForFrame(), lldb_private::UnwindLLDB::DoCreateRegisterContextForFrame(), lldb_private::wasm::UnwindWasm::DoCreateRegisterContextForFrame(), and lldb_private::StackFrameList::SynthesizeTailCallFrames().
|
inlinevirtual |
Get the StackFrameList that contains this frame.
Returns the StackFrameList that contains this frame, allowing frames to resolve execution contexts without calling Thread::GetStackFrameList(), which can cause circular dependencies during frame provider initialization.
Definition at line 554 of file StackFrame.h.
References m_frame_list_wp.
|
virtual |
Get the frame's demangled display name.
///
Reimplemented in lldb_private::BorrowedStackFrame, and lldb_private::ScriptedFrame.
Definition at line 1328 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::Function::GetDisplayName(), lldb_private::InlineFunctionInfo::GetDisplayName(), lldb_private::Symbol::GetDisplayName(), lldb_private::Block::GetInlinedFunctionInfo(), GetSymbolContext(), and lldb_private::SymbolContext::symbol.
Referenced by lldb_private::FormatEntity::Format(), lldb::SBFrame::GetDisplayFunctionName(), and lldb_private::ScriptedFrame::GetDisplayFunctionName().
|
virtual |
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. |
Reimplemented in lldb_private::BorrowedStackFrame.
Definition at line 1198 of file StackFrame.cpp.
References lldb_private::Status::FromErrorString(), and m_sc.
Referenced by lldb_private::DWARFExpression::MatchesOperand().
|
virtual |
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. |
Reimplemented in lldb_private::BorrowedStackFrame.
Definition at line 1158 of file StackFrame.cpp.
References lldb_private::Status::FromError(), lldb_private::Status::FromErrorString(), lldb_private::ExecutionContext::GetTargetPtr(), GOT_FRAME_BASE, LLDB_INVALID_ADDRESS, m_cfa_is_valid, m_flags, m_frame_base, m_frame_base_error, m_mutex, and m_sc.
Referenced by lldb_private::DWARFExpression::Evaluate().
|
virtual |
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.
Reimplemented in lldb_private::BorrowedStackFrame.
Definition at line 285 of file StackFrame.cpp.
References GetSymbolContext(), m_flags, and m_sc.
Referenced by GetModuleConfig(), GetStackID(), lldb_private::ClangExpressionSourceCode::GetText(), GetVariableList(), GuessValueForRegisterAndOffset(), and SetupDeclVendor().
|
virtual |
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.
Reimplemented in lldb_private::BorrowedStackFrame.
Definition at line 199 of file StackFrame.cpp.
References lldb_private::eCode, GetThread(), m_flags, m_frame_code_addr, m_mutex, m_sc, and RESOLVED_FRAME_CODE_ADDR.
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_private::CommandObjectDisassemble::GetPCRanges(), GetStatus(), GetSymbolContext(), GuessValueForAddress(), GuessValueForRegisterAndOffset(), lldb_private::Variable::IsInScope(), and lldb_private::Disassembler::PrintInstructions().
|
virtual |
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.
Reimplemented in lldb_private::BorrowedStackFrame.
Definition at line 231 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().
|
virtual |
Query this frame to find what frame it is in this Thread's StackFrameList.
Reimplemented in lldb_private::BorrowedStackFrame.
Definition at line 184 of file StackFrame.cpp.
References GetThread(), and m_frame_index.
Referenced by lldb_private::wasm::UnwindWasm::DoCreateRegisterContextForFrame(), CommandObjectTargetVariable::DoExecute(), Evaluate_DW_OP_entry_value(), lldb_private::FormatEntity::Format(), and lldb_private::ScriptedFrame::GetRegisterContext().
|
virtual |
Get the frame's demangled name.
///
Reimplemented in lldb_private::BorrowedStackFrame, and lldb_private::ScriptedFrame.
Definition at line 1301 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::Function::GetName(), lldb_private::InlineFunctionInfo::GetName(), lldb_private::Symbol::GetName(), GetSymbolContext(), and lldb_private::SymbolContext::symbol.
Referenced by lldb_private::ThreadPlanShouldStopHere::DefaultShouldStopHereCallback(), lldb_private::ThreadPlanShouldStopHere::DefaultStepFromHereCallback(), lldb_private::FormatEntity::Format(), lldb::SBFrame::GetFunctionName(), and lldb_private::ScriptedFrame::GetFunctionName().
|
virtual |
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). |
| [in] | must_have_valid_location | Whether to filter variables whose location is not available at this StackFrame's pc. |
Reimplemented in lldb_private::BorrowedStackFrame.
Definition at line 492 of file StackFrame.cpp.
References GetSymbolContext(), 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().
|
virtual |
Query this frame to determine what the default language should be when parsing expressions given the execution context.
Reimplemented in lldb_private::BorrowedStackFrame.
Definition at line 1354 of file StackFrame.cpp.
References lldb_private::SymbolContext::comp_unit, lldb_private::CompileUnit::GetLanguage(), and GetSymbolContext().
Referenced by lldb::SBFrame::EvaluateExpression(), lldb::SBFrame::EvaluateExpression(), lldb::SBFrame::EvaluateExpression(), GetLanguageSpecificData(), and GuessLanguage().
|
virtual |
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.
Reimplemented in lldb_private::BorrowedStackFrame.
Definition at line 1289 of file StackFrame.cpp.
References lldb_private::SourceLanguage::AsLanguageType(), CalculateProcess(), GetLanguage(), and GetSymbolContext().
Referenced by lldb::SBFrame::GetLanguageSpecificData().
|
virtual |
Reimplemented in lldb_private::BorrowedStackFrame.
Definition at line 2126 of file StackFrame.cpp.
References CalculateStackFrame(), GetThread(), m_frame_recognizer_generation, and m_recognized_frame_sp.
Referenced by FetchRecognizedArguments(), and IsHidden().
|
virtual |
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.
Reimplemented in lldb_private::BorrowedStackFrame, and lldb_private::ScriptedFrame.
Definition at line 1209 of file StackFrame.cpp.
References GetThread(), m_mutex, and m_reg_context_sp.
Referenced by lldb_private::OptionArgParser::DoToAddress(), DumpRegister(), DumpRegister(), lldb_private::DWARFExpression::Evaluate(), lldb_private::DWARFExpressionList::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 248 of file StackFrame.h.
References m_reg_context_sp.
Referenced by lldb_private::BorrowedStackFrame::BorrowedStackFrame(), and lldb_private::FormatEntity::Format().
|
virtual |
Reimplemented in lldb_private::BorrowedStackFrame.
Definition at line 154 of file StackFrame.cpp.
References GetFrameBlock(), GetSymbolContext(), m_flags, m_id, m_mutex, m_sc, RESOLVED_FRAME_ID_SYMBOL_SCOPE, and SetSymbolContextScope().
Referenced by lldb_private::StackFrameList::Dump(), lldb_private::DWARFExpression::Evaluate(), lldb_private::StackFrameList::FetchFramesUpTo(), lldb_private::Process::RunThreadPlan(), lldb_private::Thread::SetSelectedFrame(), lldb_private::ThreadPlanStepInstruction::ShouldStop(), UpdateCurrentFrameFromPreviousFrame(), and UpdatePreviousFrameFromCurrentFrame().
|
virtual |
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 2046 of file StackFrame.cpp.
References lldb_private::Disassembler::Disassemble(), lldb_private::SourceManager::DisplaySourceLinesWithLineNumbers(), DumpUsingSettingsFormat(), lldb_private::Disassembler::eOptionMarkPCAddress, lldb::eStopDisassemblyTypeAlways, lldb::eStopDisassemblyTypeNever, lldb::eStopDisassemblyTypeNoDebugInfo, lldb::eStopDisassemblyTypeNoSource, 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::Debugger::GetStopDisassemblyDisplay(), lldb_private::Debugger::GetStopSourceLineCount(), GetSymbolContext(), lldb_private::ExecutionContext::GetTargetPtr(), lldb_private::Stream::Indent(), lldb_private::Disassembler::Limit::Instructions, and m_sc.
|
virtual |
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. |
Reimplemented in lldb_private::BorrowedStackFrame.
Definition at line 310 of file StackFrame.cpp.
References lldb_private::SymbolContext::block, CalculateTarget(), lldb_private::SymbolContext::comp_unit, lldb_private::SymbolContext::function, GetFrameCodeAddress(), GetFrameCodeAddressForSymbolication(), lldb_private::Address::IsValid(), lldb_private::SymbolContext::line_entry, m_flags, m_mutex, m_sc, RESOLVED_FRAME_CODE_ADDR, and lldb_private::SymbolContext::symbol.
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(), CommandObjectMemoryRead::DoExecute(), CommandObjectTargetVariable::DoExecute(), CommandObjectThreadJump::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_private::CommandObjectDisassemble::GetCurrentFunctionRanges(), lldb_private::CommandObjectDisassemble::GetCurrentLineRanges(), GetDefaultFile(), GetDisplayFunctionName(), GetFrameBlock(), GetFunctionName(), GetInScopeVariableList(), GetLanguage(), GetLanguageSpecificData(), lldb::SBFrame::GetModule(), GetStackID(), GetStatus(), DynamicLoaderHexagonDYLD::GetStepThroughTrampolinePlan(), DynamicLoaderPOSIXDYLD::GetStepThroughTrampolinePlan(), lldb_private::DynamicLoaderDarwin::GetStepThroughTrampolinePlan(), 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 135 of file StackFrame.h.
References m_thread_wp.
Referenced by lldb_private::BorrowedStackFrame::BorrowedStackFrame(), CalculateProcess(), CalculateTarget(), CalculateThread(), ChangePC(), lldb_private::HistoryUnwind::DoCreateRegisterContextForFrame(), lldb_private::wasm::UnwindWasm::DoCreateRegisterContextForFrame(), GetFrameCodeAddress(), GetFrameIndex(), GetRecognizedFrame(), lldb_private::ScriptedFrame::GetRegisterContext(), GetRegisterContext(), and UpdatePreviousFrameFromCurrentFrame().
|
virtual |
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. |
Reimplemented in lldb_private::BorrowedStackFrame.
Definition at line 525 of file StackFrame.cpp.
References CalculateExecutionContext(), DILGetValueForVariableExpressionPath(), error(), lldb_private::ExecutionContext::GetTargetRef(), lldb_private::TargetProperties::GetUseDIL(), and LegacyGetValueForVariableExpressionPath().
Referenced by lldb_private::CommandObjectDWIMPrint::DoExecute().
|
virtual |
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. |
Reimplemented in lldb_private::BorrowedStackFrame.
Definition at line 1225 of file StackFrame.cpp.
References lldb_private::ValueObjectVariable::Create(), lldb::eNoDynamicValues, lldb_private::VariableList::FindIndexForVariable(), lldb_private::VariableList::GetSize(), GetVariableList(), IsHistorical(), m_mutex, and m_variable_list_value_objects.
Referenced by FetchVariablesUnlessInterrupted(), lldb::SBFrame::FindValue(), FindVariable(), and LegacyGetValueForVariableExpressionPath().
|
virtual |
Retrieve the list of variables whose scope either:
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. |
Reimplemented in lldb_private::BorrowedStackFrame.
Definition at line 441 of file StackFrame.cpp.
References lldb_private::Block::AppendBlockVariables(), GetFrameBlock(), lldb_private::SymbolFile::GetFrameVariableError(), GetSymbolContext(), m_flags, m_mutex, m_sc, m_variable_list_sp, RESOLVED_GLOBAL_VARIABLES, and RESOLVED_VARIABLES.
Referenced by FetchVariablesUnlessInterrupted(), lldb::SBFrame::FindValue(), GetValueObjectForFrameVariable(), GuessValueForRegisterAndOffset(), lldb_private::ClangExpressionDeclMap::LookUpLldbClass(), lldb_private::ClangExpressionDeclMap::LookUpLldbObjCClass(), and PrivateAutoComplete().
|
virtual |
Similar to GetLanguage(), but is allowed to take a potentially incorrect guess if exact information is not available.
Reimplemented in lldb_private::BorrowedStackFrame.
Definition at line 1361 of file StackFrame.cpp.
References lldb_private::SymbolContext::function, GetLanguage(), lldb_private::Function::GetMangled(), lldb_private::Symbol::GetMangled(), GetSymbolContext(), lldb_private::Mangled::GuessLanguage(), and lldb_private::SymbolContext::symbol.
Referenced by CommandObjectTypeLookup::CommandObjectTypeLookup(), lldb_private::CommandObjectDWIMPrint::DoExecute(), and lldb::SBFrame::GuessLanguage().
|
virtual |
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. |
Reimplemented in lldb_private::BorrowedStackFrame.
Definition at line 1452 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.
|
virtual |
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... |
Reimplemented in lldb_private::BorrowedStackFrame.
Definition at line 1822 of file StackFrame.cpp.
References lldb_private::Block::CalculateSymbolContextFunction(), CalculateTarget(), lldb_private::Disassembler::DisassembleRange(), lldb_private::Function::GetAddressRanges(), GetFrameBlock(), GetFrameCodeAddress(), lldb_private::Function::GetRangeContainingLoadAddress(), and GetVariableList().
Referenced by GuessValueForAddress().
|
protected |
Definition at line 2036 of file StackFrame.cpp.
References m_disassembly, m_variable_list_sp, and m_variable_list_value_objects.
|
virtual |
Determine whether this StackFrame has debug information available or not.
Reimplemented in lldb_private::BorrowedStackFrame.
Definition at line 1219 of file StackFrame.cpp.
References GetSymbolContext(), and m_sc.
Referenced by lldb_private::ThreadPlanShouldStopHere::DefaultShouldStopHereCallback(), CommandObjectThreadStepWithTypeAndScope::DoExecute(), CommandObjectThreadUntil::DoExecute(), CommandObjectSourceInfo::DumpLinesForFrame(), lldb_private::FormatEntity::Format(), lldb_private::Thread::FrameSelectedCallback(), and GetDefaultFile().
|
inlinevirtual |
Reimplemented in lldb_private::BorrowedStackFrame, and lldb_private::ScriptedFrame.
Definition at line 49 of file StackFrame.h.
References ID.
Referenced by lldb_private::BorrowedStackFrame::classof(), lldb_private::ScriptedFrame::classof(), classof(), lldb_private::BorrowedStackFrame::isA(), and lldb_private::ScriptedFrame::isA().
|
virtual |
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.
Reimplemented in lldb_private::BorrowedStackFrame, and lldb_private::ScriptedFrame.
Definition at line 1281 of file StackFrame.cpp.
References m_artificial.
Referenced by lldb::SBFrame::IsArtificial().
|
virtual |
Query whether this frame should be hidden from backtraces.
Frame recognizers can customize this behavior and hide distracting system implementation details this way.
Reimplemented in lldb_private::BorrowedStackFrame, and lldb_private::ScriptedFrame.
Definition at line 1283 of file StackFrame.cpp.
References GetRecognizedFrame().
Referenced by lldb::SBFrame::IsHidden().
|
virtual |
Query whether this frame is part of a historical backtrace.
Reimplemented in lldb_private::BorrowedStackFrame.
Definition at line 1273 of file StackFrame.cpp.
References History, and m_stack_frame_kind.
Referenced by ChangePC(), GetInScopeVariableList(), GetValueObjectForFrameVariable(), LegacyGetValueForVariableExpressionPath(), and StackFrame().
|
virtual |
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.
Reimplemented in lldb_private::BorrowedStackFrame, and lldb_private::ScriptedFrame.
Definition at line 1265 of file StackFrame.cpp.
References GetSymbolContext(), and m_sc.
Referenced by lldb::SBFrame::IsInlined().
|
virtual |
Query whether this frame is synthetic.
Reimplemented in lldb_private::BorrowedStackFrame.
Definition at line 1277 of file StackFrame.cpp.
References m_stack_frame_kind, and Synthetic.
Referenced by lldb::SBFrame::IsSynthetic().
|
private |
Private methods, called from GetValueForVariableExpressionPath.
See that method for documentation of parameters and return value.
Definition at line 582 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::ConstString::GetLength(), GetSymbolContext(), GetValueObjectForFrameVariable(), lldb_private::CompilerType::IsAnonymousType(), IsHistorical(), m_sc, and lldb_private::Status::Success().
Referenced by GetValueForVariableExpressionPath().
|
privatedelete |
References StackFrame().
|
inline |
Set this frame's frame index.
Definition at line 455 of file StackFrame.h.
References m_frame_index.
Referenced by lldb_private::StackFrameList::SynthesizeTailCallFrames().
|
protected |
Definition at line 193 of file StackFrame.cpp.
References m_flags, m_id, m_mutex, and RESOLVED_FRAME_ID_SYMBOL_SCOPE.
Referenced by GetStackID().
|
protected |
Definition at line 1996 of file StackFrame.cpp.
References GetStackID(), lldb_private::StreamString::GetString(), m_disassembly, m_mutex, m_variable_list_sp, m_variable_list_value_objects, and StackFrame().
|
protected |
Definition at line 2008 of file StackFrame.cpp.
References CalculateProcess(), lldb_private::SymbolContext::comp_unit, lldb_private::SymbolContext::function, lldb_private::StackID::GetPC(), 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, StackFrame(), and lldb_private::SymbolContext::target_sp.
Referenced by lldb_private::StackFrameList::FetchFramesUpTo().
|
friend |
Definition at line 559 of file StackFrame.h.
References BorrowedStackFrame.
Referenced by BorrowedStackFrame.
|
friend |
Definition at line 560 of file StackFrame.h.
References StackFrameList.
Referenced by StackFrameList.
|
friend |
Definition at line 561 of file StackFrame.h.
References StackFrame(), and SyntheticStackFrameList.
Referenced by SyntheticStackFrameList.
|
static |
|
protected |
Is this an artificial stack frame (e.g.
a synthesized result of inferring missing tail call frames from a backtrace) with limited support for local variables. Orthogonal to StackFrame::Kind.
Definition at line 594 of file StackFrame.h.
Referenced by IsArtificial(), StackFrame(), StackFrame(), and StackFrame().
|
protected |
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 600 of file StackFrame.h.
Referenced by lldb_private::BorrowedStackFrame::BorrowedStackFrame(), GetFrameCodeAddressForSymbolication(), StackFrame(), StackFrame(), StackFrame(), and UpdatePreviousFrameFromCurrentFrame().
|
protected |
Does this frame have a CFA? Different from CFA == LLDB_INVALID_ADDRESS.
Definition at line 589 of file StackFrame.h.
Referenced by GetFrameBaseValue(), StackFrame(), StackFrame(), and StackFrame().
|
protected |
Definition at line 575 of file StackFrame.h.
Referenced by GetConcreteFrameIndex(), StackFrame(), StackFrame(), StackFrame(), and UpdatePreviousFrameFromCurrentFrame().
|
protected |
Definition at line 606 of file StackFrame.h.
Referenced by Disassemble(), HasCachedData(), StackFrame(), StackFrame(), StackFrame(), and UpdateCurrentFrameFromPreviousFrame().
|
protected |
Definition at line 584 of file StackFrame.h.
Referenced by ChangePC(), GetFrameBaseValue(), GetFrameBlock(), GetFrameCodeAddress(), GetStackID(), GetSymbolContext(), GetVariableList(), SetSymbolContextScope(), StackFrame(), StackFrame(), StackFrame(), and UpdatePreviousFrameFromCurrentFrame().
|
protected |
Definition at line 585 of file StackFrame.h.
Referenced by GetFrameBaseValue(), StackFrame(), StackFrame(), StackFrame(), and UpdatePreviousFrameFromCurrentFrame().
|
protected |
Definition at line 586 of file StackFrame.h.
Referenced by GetFrameBaseValue(), StackFrame(), StackFrame(), StackFrame(), and UpdatePreviousFrameFromCurrentFrame().
|
protected |
The frame code address (might not be the same as the actual PC for inlined frames) as a section/offset address.
Definition at line 582 of file StackFrame.h.
Referenced by ChangePC(), GetFrameCodeAddress(), StackFrame(), StackFrame(), StackFrame(), and UpdatePreviousFrameFromCurrentFrame().
|
protected |
Definition at line 574 of file StackFrame.h.
Referenced by Dump(), GetFrameIndex(), SetFrameIndex(), StackFrame(), StackFrame(), StackFrame(), and UpdatePreviousFrameFromCurrentFrame().
|
protected |
Definition at line 602 of file StackFrame.h.
Referenced by GetContainingStackFrameList().
|
protected |
Definition at line 587 of file StackFrame.h.
Referenced by GetRecognizedFrame().
|
protected |
Definition at line 577 of file StackFrame.h.
Referenced by GetStackID(), SetSymbolContextScope(), StackFrame(), StackFrame(), StackFrame(), and UpdatePreviousFrameFromCurrentFrame().
|
protected |
Definition at line 607 of file StackFrame.h.
Referenced by ChangePC(), Disassemble(), GetFrameBaseValue(), GetFrameCodeAddress(), GetInScopeVariableList(), GetRegisterContext(), GetStackID(), GetSymbolContext(), GetValueObjectForFrameVariable(), GetVariableList(), SetSymbolContextScope(), StackFrame(), StackFrame(), StackFrame(), UpdateCurrentFrameFromPreviousFrame(), and UpdatePreviousFrameFromCurrentFrame().
|
protected |
Definition at line 605 of file StackFrame.h.
Referenced by GetRecognizedFrame(), StackFrame(), StackFrame(), and StackFrame().
|
protected |
Definition at line 576 of file StackFrame.h.
Referenced by lldb_private::ScriptedFrame::GetRegisterContext(), GetRegisterContext(), GetRegisterContextSP(), StackFrame(), StackFrame(), StackFrame(), and UpdatePreviousFrameFromCurrentFrame().
|
protected |
Definition at line 583 of file StackFrame.h.
Referenced by ChangePC(), Dump(), DumpUsingFormat(), GetFrameBaseExpression(), GetFrameBaseValue(), GetFrameBlock(), GetFrameCodeAddress(), GetInScopeVariableList(), GetStackID(), GetStatus(), GetSymbolContext(), GetVariableList(), HasDebugInformation(), IsInlined(), LegacyGetValueForVariableExpressionPath(), StackFrame(), StackFrame(), StackFrame(), and UpdatePreviousFrameFromCurrentFrame().
|
protected |
Definition at line 590 of file StackFrame.h.
Referenced by IsHistorical(), IsSynthetic(), lldb_private::ScriptedFrame::ScriptedFrame(), StackFrame(), StackFrame(), and StackFrame().
|
protected |
For StackFrame and derived classes only.
Definition at line 573 of file StackFrame.h.
Referenced by lldb_private::ScriptedFrame::GetDynamicRegisterInfo(), GetThread(), StackFrame(), StackFrame(), and StackFrame().
|
protected |
Definition at line 601 of file StackFrame.h.
Referenced by GetVariableList(), HasCachedData(), StackFrame(), StackFrame(), StackFrame(), and UpdateCurrentFrameFromPreviousFrame().
|
protected |
Value objects for each variable in m_variable_list_sp.
Definition at line 604 of file StackFrame.h.
Referenced by GetValueObjectForFrameVariable(), HasCachedData(), StackFrame(), StackFrame(), StackFrame(), and UpdateCurrentFrameFromPreviousFrame().