@@ -394,29 +394,25 @@ def track(self, thread_id, frames_list, frame_custom_thread_id=None):
394394
395395 frame_ids_from_thread = self ._thread_id_to_frame_ids .setdefault (coroutine_or_main_thread_id , [])
396396
397- self ._thread_id_to_frames_list [coroutine_or_main_thread_id ] = frames_list
398- for frame in frames_list :
397+ def _register_frame (frame ):
399398 frame_id = id (frame )
400399 self ._frame_id_to_frame [frame_id ] = frame
401400 _FrameVariable (self .py_db , frame , self ._register_variable ) # Instancing is enough to register.
402401 self ._suspended_frames_manager ._variable_reference_to_frames_tracker [frame_id ] = self
403402 frame_ids_from_thread .append (frame_id )
404-
405403 self ._frame_id_to_main_thread_id [frame_id ] = thread_id
406404
405+ self ._thread_id_to_frames_list [coroutine_or_main_thread_id ] = frames_list
406+ for frame in frames_list :
407+ _register_frame (frame )
408+
407409 # Also track frames from chained exceptions (e.g. __cause__ / __context__)
408410 # so that variable evaluation works for chained exception frames displayed
409411 # in the call stack.
410412 chained = getattr (frames_list , 'chained_frames_list' , None )
411413 while chained is not None and len (chained ) > 0 :
412414 for frame in chained :
413- frame_id = id (frame )
414- self ._frame_id_to_frame [frame_id ] = frame
415- _FrameVariable (self .py_db , frame , self ._register_variable )
416- self ._suspended_frames_manager ._variable_reference_to_frames_tracker [frame_id ] = self
417- frame_ids_from_thread .append (frame_id )
418-
419- self ._frame_id_to_main_thread_id [frame_id ] = thread_id
415+ _register_frame (frame )
420416 chained = getattr (chained , 'chained_frames_list' , None )
421417
422418 frame = None
0 commit comments