import sys, pdb def backward_references(pdb_session): initial = pdb_session while (hasattr(pdb_session, '_previous_sigint_handler') and pdb_session._previous_sigint_handler): prev = pdb_session._previous_sigint_handler.__self__ if isinstance(prev, pdb.Pdb): if initial: yield initial initial = None yield prev pdb_session = prev sessions = {} i = 1 while i: pdb_session = pdb.Pdb() sessions[pdb_session] = i # Set a hard breakpoint here, this is equivalent to pdb.set_trace(). pdb_session.set_trace(sys._getframe()) rv = (' -> '.join('pdb %d' % sessions[s] for s in backward_references(pdb_session))) if rv: print(rv) i += 1