docs: def dump_frames(self, frame):
          """ dumps frames chain in a representation suitable for serialization 
             and remote (debugger) client usage.
          """
          current_thread = threading.currentThread()
          frames = []
          frame_browser = frame
          
          # Browse the frame chain as far as we can
          _logger.f_debug("dump_frames(), frame analysis:")
          spacer = ""
          while hasattr(frame_browser, 'f_back') and frame_browser.f_back != self.frame_beginning:
              spacer += "="
              _logger.f_debug("%s>frame = %s, frame.f_code = %s, frame.f_back = %s, "
                              "self.frame_beginning = %s",
                              spacer,
                              hex(id(frame_browser)),
                              frame_browser.f_code,
                              hex(id(frame_browser.f_back)),
                              hex(id(self.frame_beginning)))
  
              # At root frame, globals == locals so we dump only globals
              if hasattr(frame_browser.f_back, 'f_back')\
                      and frame_browser.f_back.f_back != self.frame_beginning:
                  locals_vars_list = self.extract_object_properties(frame_browser.f_locals,
                                                                    limit_size=True)
              else:
                  locals_vars_list = []
                                  
              globals_vars_list = self.extract_object_properties(frame_browser.f_globals,
                                                                 limit_size=True)
              # normalize path sent to debugging client
              file_path = self.normalize_path_out(frame_browser.f_code.co_filename)
  
              frame_name = "%s() [%s]" % (frame_browser.f_code.co_name, current_thread.name,)
              remote_frame = {
                  'id': id(frame_browser),
                  'name': frame_name,
                  'line_number': frame_browser.f_lineno,  # Warning 1 based
                  'file_path': file_path,
                  'f_locals': locals_vars_list + globals_vars_list,
                  'thread': current_thread.ident,
                  'thread_name': current_thread.name
              }
              frames.append(remote_frame)
              frame_browser = frame_browser.f_back
          return frames