LLDB mainline
lldb_private::SyntheticStackFrameList Class Reference

A StackFrameList that wraps another StackFrameList and uses a SyntheticFrameProvider to lazily provide frames from either the provider or the underlying real stack frame list. More...

#include <StackFrameList.h>

Inheritance diagram for lldb_private::SyntheticStackFrameList:
[legend]

Public Member Functions

 SyntheticStackFrameList (Thread &thread, lldb::StackFrameListSP input_frames, const lldb::StackFrameListSP &prev_frames_sp, bool show_inline_frames)
Public Member Functions inherited from lldb_private::StackFrameList
 StackFrameList (Thread &thread, const lldb::StackFrameListSP &prev_frames_sp, bool show_inline_frames)
virtual ~StackFrameList ()
uint32_t GetNumFrames (bool can_create=true)
 Get the number of visible frames.
lldb::StackFrameSP GetFrameAtIndex (uint32_t idx)
 Get the frame at index idx. Invisible frames cannot be indexed.
lldb::StackFrameSP GetFrameWithConcreteFrameIndex (uint32_t unwind_idx)
 Get the first concrete frame with index greater than or equal to idx.
lldb::StackFrameSP GetFrameWithStackID (const StackID &stack_id)
 Retrieve the stack frame with the given ID stack_id.
uint32_t SetSelectedFrame (lldb_private::StackFrame *frame)
 Mark a stack frame as the currently selected frame and return its index.
void ClearSelectedFrameIndex ()
 Resets the selected frame index of this object.
uint32_t GetSelectedFrameIndex (SelectMostRelevant select_most_relevant_frame)
 Get the currently selected frame index.
bool SetSelectedFrameByIndex (uint32_t idx)
 Mark a stack frame as the currently selected frame using the frame index idx.
uint32_t GetVisibleStackFrameIndex (uint32_t idx)
 If the current inline depth (i.e the number of invisible frames) is valid, subtract it from idx.
void CalculateCurrentInlinedDepth ()
 Calculate and set the current inline depth.
void SetDefaultFileAndLineToSelectedFrame ()
 If the currently selected frame comes from the currently selected thread, point the default file and line of the thread's target to the location specified by the frame.
void Clear ()
 Clear the cache of frames.
void Dump (Stream *s)
lldb::StackFrameSP GetStackFrameSPForStackFramePtr (StackFrame *stack_frame_ptr)
 If stack_frame_ptr is contained in this StackFrameList, return its wrapping shared pointer.
size_t GetStatus (Stream &strm, uint32_t first_frame, uint32_t num_frames, bool show_frame_info, uint32_t num_frames_with_source, bool show_unique=false, bool show_hidden=false, const char *frame_marker=nullptr)
bool WereAllFramesFetched () const
 Returns whether we have currently fetched all the frames of a stack.
ThreadGetThread () const
 Get the thread associated with this frame list.

Protected Member Functions

bool FetchFramesUpTo (uint32_t end_idx, InterruptionControl allow_interrupt) override
 Override FetchFramesUpTo to lazily return frames from the provider or from the actual stack frame list.
Protected Member Functions inherited from lldb_private::StackFrameList
bool SetFrameAtIndex (uint32_t idx, lldb::StackFrameSP &frame_sp)
 Use this API to build a stack frame list (used for scripted threads, for instance.) This API is not meant for StackFrameLists that have unwinders and partake in lazy stack filling (using GetFramesUpTo).
bool GetFramesUpTo (uint32_t end_idx, InterruptionControl allow_interrupt)
 Ensures that frames up to (and including) end_idx are realized in the StackFrameList.
bool GetAllFramesFetched () const
void SetAllFramesFetched ()
bool DecrementCurrentInlinedDepth ()
void ResetCurrentInlinedDepth ()
uint32_t GetCurrentInlinedDepth ()
void SetCurrentInlinedDepth (uint32_t new_depth)
void SelectMostRelevantFrame ()
 Calls into the stack frame recognizers and stop info to set the most relevant frame.

Private Attributes

lldb::StackFrameListSP m_input_frames
 The input stack frame list that the provider transforms.

Additional Inherited Members

Protected Types inherited from lldb_private::StackFrameList
typedef std::vector< lldb::StackFrameSPcollection
typedef collection::iterator iterator
typedef collection::const_iterator const_iterator
Protected Attributes inherited from lldb_private::StackFrameList
Threadm_thread
 The thread this frame list describes.
lldb::StackFrameListSP m_prev_frames_sp
 The old stack frame list.
std::shared_mutex m_list_mutex
 A mutex for this frame list.
std::mutex m_inlined_depth_mutex
collection m_frames
 A cache of frames.
std::optional< uint32_t > m_selected_frame_idx
 The currently selected frame.
std::recursive_mutex m_selected_frame_mutex
 Protect access to m_selected_frame_idx.
uint32_t m_concrete_frames_fetched
 The number of concrete frames fetched while filling the frame list.
uint32_t m_current_inlined_depth
 The number of synthetic function activations (invisible frames) expanded from the concrete frame #0 activation.
lldb::addr_t m_current_inlined_pc
 The program counter value at the currently selected synthetic activation.
const bool m_show_inlined_frames
 Whether or not to show synthetic (inline) frames. Immutable.

Detailed Description

A StackFrameList that wraps another StackFrameList and uses a SyntheticFrameProvider to lazily provide frames from either the provider or the underlying real stack frame list.

Definition at line 242 of file StackFrameList.h.

Constructor & Destructor Documentation

◆ SyntheticStackFrameList()

SyntheticStackFrameList::SyntheticStackFrameList ( Thread & thread,
lldb::StackFrameListSP input_frames,
const lldb::StackFrameListSP & prev_frames_sp,
bool show_inline_frames )

Member Function Documentation

◆ FetchFramesUpTo()

bool SyntheticStackFrameList::FetchFramesUpTo ( uint32_t end_idx,
InterruptionControl allow_interrupt )
overrideprotectedvirtual

Member Data Documentation

◆ m_input_frames

lldb::StackFrameListSP lldb_private::SyntheticStackFrameList::m_input_frames
private

The input stack frame list that the provider transforms.

This could be a real StackFrameList or another SyntheticStackFrameList.

Definition at line 257 of file StackFrameList.h.

Referenced by SyntheticStackFrameList().


The documentation for this class was generated from the following files: