def mup_func(self, args, from_tty): steps = 1 s = str(args).split() if len(s) is 1: try: steps = int(s[0]) except: pass elif len(s) > 1: self.usage() return selected_frame = m_frame.get_selected_frame() newest_frame = m_frame.get_newest_frame() if not selected_frame or not newest_frame: gdb_print('Unable to locate Maple frame') return # walk through from innermost frame to selected frame # to get the level number from newest frame to selected frame index = 0 frame = newest_frame while frame != selected_frame and frame: frame = m_frame.get_next_older_frame(frame) index += 1 if not frame: gdb_print('No valid frames found') return prev_maple_frame = frame prev_maple_frame_index = index while frame and steps > 0: frame = m_frame.get_next_older_frame(frame) if frame: m_util.gdb_exec_to_null('up-silently') index += 1 else: frame = prev_maple_frame m_util.gdb_exec_to_null('down-silently ' + str(index - prev_maple_frame_index)) index = prev_maple_frame_index break if m_frame.is_maple_frame(frame): prev_maple_frame = frame prev_maple_frame_index = index steps -= 1 print_maple_frame(frame, index, MBT_FORMAT_SRC) m_datastore.mgdb_rdata.update_frame_change_counter()
def mbt_func(self, args, from_tty): s = str(args) mbt_format = MBT_FORMAT_SRC full = False if s == "-full" or s == "full": full = True elif s == "-asm": mbt_format = MBT_FORMAT_ASM elif s == "-mir": mbt_format = MBT_FORMAT_MIR selected_frame = m_frame.get_selected_frame() newest_frame = m_frame.get_newest_frame() if not selected_frame or not newest_frame: gdb_print('Unable to locate Maple frame') return # walk through from innermost frame to selected frame index = 0 frame = newest_frame while frame != selected_frame and frame: frame = m_frame.get_next_older_frame(frame) index += 1 if not frame: gdb_print('No valid frames found') return start_level = index gdb_print('Maple Traceback (most recent call first):') while frame: if m_frame.is_maple_frame(frame): print_maple_frame(frame, index, mbt_format) elif full: print_gdb_frame(frame, index) index += 1 frame = m_frame.get_next_older_frame(frame) if frame: m_util.gdb_exec_to_null('up-silently') # move frame back to the original stack level m_util.gdb_exec_to_null('down-silently ' + str(index - start_level - 1))