Этот является разработкой ответа Ромуальда, который восстанавливает исходный stdin, используя его файловый дескриптор. Это приводит к тому, что readline работает внутри отладчика. Кроме того, специальное управление KeyboardInterrupt pdb отключено, чтобы не мешать многопроцессорному обработчику синтаксиса.
class ForkablePdb(pdb.Pdb):
_original_stdin_fd = sys.stdin.fileno()
_original_stdin = None
def __init__(self):
pdb.Pdb.__init__(self, nosigint=True)
def _cmdloop(self):
current_stdin = sys.stdin
try:
if not self._original_stdin:
self._original_stdin = os.fdopen(self._original_stdin_fd)
sys.stdin = self._original_stdin
self.cmdloop()
finally:
sys.stdin = current_stdin
Отлично! Winpdb хорошо работает с multiprocessing.Process() – grep
Следует отметить, что Winpdb - это многоплатформенное, бесплатное и бесплатное программное обеспечение. – OliverUv
Я не мог, в течение 20 минут читать и играть с winpdb, найти способ просто запустить интерактивный сеанс отладки в существующем скрипте через импорт, a la 'import pdb; pdb.set_trace() '. Однако ответ ForkedPdb здесь работал как шарм! – Pat