LLDB mainline
|
#include <ScriptedFrame.h>
Public Member Functions | |
ScriptedFrame (ScriptedThread &thread, lldb::ScriptedFrameInterfaceSP interface_sp, lldb::user_id_t frame_idx, lldb::addr_t pc, SymbolContext &sym_ctx, lldb::RegisterContextSP reg_ctx_sp, std::shared_ptr< DynamicRegisterInfo > reg_info_sp, StructuredData::GenericSP script_object_sp=nullptr) | |
~ScriptedFrame () override | |
bool | IsInlined () override |
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 | IsArtificial () const override |
Query whether this frame is artificial (e.g a synthesized result of inferring missing tail call frames from a backtrace). | |
bool | IsHidden () override |
Query whether this frame should be hidden from backtraces. | |
const char * | GetFunctionName () override |
Get the frame's demangled name. | |
const char * | GetDisplayFunctionName () override |
Get the frame's demangled display name. | |
Public Member Functions inherited from lldb_private::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, 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 |
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 whose scope either: | |
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 | IsSynthetic () const |
Query whether this frame is synthetic. | |
bool | IsHistorical () const |
Query whether this frame is part of a historical backtrace. | |
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. | |
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 () |
Public Member Functions inherited from lldb_private::ExecutionContextScope | |
virtual | ~ExecutionContextScope ()=default |
Static Public Member Functions | |
static llvm::Expected< std::shared_ptr< ScriptedFrame > > | Create (ScriptedThread &thread, StructuredData::DictionarySP args_sp, StructuredData::Generic *script_object=nullptr) |
Private Member Functions | |
void | CheckInterpreterAndScriptObject () const |
lldb::ScriptedFrameInterfaceSP | GetInterface () const |
ScriptedFrame (const ScriptedFrame &)=delete | |
const ScriptedFrame & | operator= (const ScriptedFrame &)=delete |
std::shared_ptr< DynamicRegisterInfo > | GetDynamicRegisterInfo () |
Private Attributes | |
lldb::ScriptedFrameInterfaceSP | m_scripted_frame_interface_sp |
lldb_private::StructuredData::GenericSP | m_script_object_sp |
std::shared_ptr< DynamicRegisterInfo > | m_register_info_sp |
Definition at line 25 of file ScriptedFrame.h.
ScriptedFrame::ScriptedFrame | ( | ScriptedThread & | thread, |
lldb::ScriptedFrameInterfaceSP | interface_sp, | ||
lldb::user_id_t | frame_idx, | ||
lldb::addr_t | pc, | ||
SymbolContext & | sym_ctx, | ||
lldb::RegisterContextSP | reg_ctx_sp, | ||
std::shared_ptr< DynamicRegisterInfo > | reg_info_sp, | ||
StructuredData::GenericSP | script_object_sp = nullptr ) |
Definition at line 112 of file ScriptedFrame.cpp.
References m_register_info_sp, m_script_object_sp, m_scripted_frame_interface_sp, pc, and lldb_private::StackFrame::StackFrame().
Referenced by operator=(), and ScriptedFrame().
|
override |
Definition at line 126 of file ScriptedFrame.cpp.
|
privatedelete |
References ScriptedFrame().
|
private |
Definition at line 16 of file ScriptedFrame.cpp.
References GetInterface(), lldbassert, and m_script_object_sp.
Referenced by GetDisplayFunctionName(), GetDynamicRegisterInfo(), and GetFunctionName().
|
static |
Definition at line 22 of file ScriptedFrame.cpp.
References lldb_private::Address::CalculateSymbolContext(), lldb_private::DynamicRegisterInfo::Create(), LLDB_INVALID_ADDRESS, pc, and lldb_private::Address::SetLoadAddress().
Referenced by lldb_private::ScriptedThread::LoadArtificialStackFrames().
|
overridevirtual |
Get the frame's demangled display name.
///
Reimplemented from lldb_private::StackFrame.
Definition at line 136 of file ScriptedFrame.cpp.
References lldb_private::ConstString::AsCString(), CheckInterpreterAndScriptObject(), and GetInterface().
|
private |
Definition at line 157 of file ScriptedFrame.cpp.
References CheckInterpreterAndScriptObject(), lldb_private::DynamicRegisterInfo::Create(), error(), lldb_private::ScriptedInterface::ErrorWithMessage(), GetInterface(), m_register_info_sp, lldb_private::StackFrame::m_thread_wp, and lldb_private::Thread.
|
overridevirtual |
Get the frame's demangled name.
///
Reimplemented from lldb_private::StackFrame.
Definition at line 128 of file ScriptedFrame.cpp.
References lldb_private::ConstString::AsCString(), CheckInterpreterAndScriptObject(), and GetInterface().
|
private |
Definition at line 153 of file ScriptedFrame.cpp.
References m_scripted_frame_interface_sp.
Referenced by CheckInterpreterAndScriptObject(), GetDisplayFunctionName(), GetDynamicRegisterInfo(), GetFunctionName(), IsArtificial(), IsHidden(), and IsInlined().
|
overridevirtual |
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 from lldb_private::StackFrame.
Definition at line 147 of file ScriptedFrame.cpp.
References GetInterface().
|
overridevirtual |
Query whether this frame should be hidden from backtraces.
Frame recognizers can customize this behavior and hide distracting system implementation details this way.
Reimplemented from lldb_private::StackFrame.
Definition at line 151 of file ScriptedFrame.cpp.
References GetInterface().
|
overridevirtual |
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 from lldb_private::StackFrame.
Definition at line 145 of file ScriptedFrame.cpp.
References GetInterface().
|
privatedelete |
References ScriptedFrame().
|
private |
Definition at line 58 of file ScriptedFrame.h.
Referenced by GetDynamicRegisterInfo(), and ScriptedFrame().
|
private |
Definition at line 57 of file ScriptedFrame.h.
Referenced by CheckInterpreterAndScriptObject(), and ScriptedFrame().
|
private |
Definition at line 56 of file ScriptedFrame.h.
Referenced by GetInterface(), and ScriptedFrame().