21from .startup
import in_gdb_thread
44gdb.events.cont.connect(_clear_frame_ids)
49 """Given a frame identifier ID, return the corresponding frame."""
51 return _all_frames[id]
56 """Given a frame identifier ID, select the corresponding frame."""
57 frame = frame_for_id(id)
58 frame.inferior_frame().select()
72 for item
in self.
seen:
76 self.
seen.append(item)
89 base_iterator = frame_iterator(gdb.newest_frame(), 0, -1)
96 num = len(_all_frames)
97 _all_frames.append(frame)
100 def yield_frames(iterator, for_elided):
101 for frame
in iterator:
105 yield (get_id(frame), for_elided, frame)
107 elided = frame.elided()
108 if elided
is not None:
109 yield from yield_frames(frame.elided(),
True)
111 yield from yield_frames(base_iterator,
False)
117 thread_id = gdb.selected_thread().global_num
119 if thread_id
not in _iter_map:
121 return _iter_map[thread_id]
129 """A generator that yields identifiers and frames.
131 Each element is a pair of the form (ID, FRAME).
132 ID is the internally-assigned frame ID.
133 FRAME is a FrameDecorator of some kind.
135 Arguments are as to the stackTrace request."""
140 base_iterator = itertools.filterfalse(
lambda item: item[1], base_iterator)
146 frame_high = frame_low + levels
147 base_iterator = itertools.islice(base_iterator, frame_low, frame_high)
149 for ident, _, frame
in base_iterator:
void select_frame(frame_info_ptr fi)
dap_frame_generator(frame_low, levels, include_all)