|
LLDB mainline
|
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>
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. | |
| Thread & | GetThread () 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::StackFrameSP > | collection |
| typedef collection::iterator | iterator |
| typedef collection::const_iterator | const_iterator |
| Protected Attributes inherited from lldb_private::StackFrameList | |
| Thread & | m_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. | |
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.
| SyntheticStackFrameList::SyntheticStackFrameList | ( | Thread & | thread, |
| lldb::StackFrameListSP | input_frames, | ||
| const lldb::StackFrameListSP & | prev_frames_sp, | ||
| bool | show_inline_frames ) |
Definition at line 59 of file StackFrameList.cpp.
References m_input_frames, lldb_private::StackFrameList::StackFrameList(), and lldb_private::StackFrameList::Thread.
|
overrideprotectedvirtual |
Override FetchFramesUpTo to lazily return frames from the provider or from the actual stack frame list.
Reimplemented from lldb_private::StackFrameList.
Definition at line 65 of file StackFrameList.cpp.
References lldb_private::StackFrameList::FetchFramesUpTo(), lldb_private::GetLog(), LLDB_LOG_ERROR, lldb_private::StackFrameList::m_frames, lldb_private::StackFrameList::m_thread, lldb_private::StackFrameList::SetAllFramesFetched(), and lldb_private::Thread.
|
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().