Как отлаживать Python-витой ipdb

Есть ли способ запустить интерактивный отладчик внутри скрученного приложения?

  import ipdb;ipdb.set_trace()

это решение в:

7-02-03T22:25:49+0100 [stderr#error] Traceback (most recent call last):
2017-02-03T22:25:49+0100 [stderr#error]   File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
2017-02-03T22:25:49+0100 [stderr#error]     self.run()
2017-02-03T22:25:49+0100 [stderr#error]   File "bo/OLA_test.py", line 110, in run
2017-02-03T22:25:49+0100 [stderr#error]     self.wrapper.Run()
2017-02-03T22:25:49+0100 [stderr#error]   File "/usr/lib/python2.7/dist-packages/ola/ClientWrapper.py", line 278, in Run
2017-02-03T22:25:49+0100 [stderr#error]     self._ss.Run()
2017-02-03T22:25:49+0100 [stderr#error]   File "/usr/lib/python2.7/dist-packages/ola/ClientWrapper.py", line 197, in Run
2017-02-03T22:25:49+0100 [stderr#error]     self._CheckTimeouts(now)
2017-02-03T22:25:49+0100 [stderr#error]   File "/usr/lib/python2.7/dist-packages/ola/ClientWrapper.py", line 222, in _CheckTimeouts
2017-02-03T22:25:49+0100 [stderr#error]     event.Run()
2017-02-03T22:25:49+0100 [stderr#error]   File "/usr/lib/python2.7/dist-packages/ola/ClientWrapper.py", line 67, in Run
2017-02-03T22:25:49+0100 [stderr#error]     self._callback()
2017-02-03T22:25:49+0100 [stderr#error]   File "/usr/lib/python2.7/bdb.py", line 49, in trace_dispatch
2017-02-03T22:25:49+0100 [stderr#error]     return self.dispatch_line(frame)
2017-02-03T22:25:49+0100 [stderr#error]   File "/usr/lib/python2.7/bdb.py", line 68, in dispatch_line
2017-02-03T22:25:49+0100 [stderr#error]     if self.quitting: raise BdbQuit

с витой ==16.6.0

1 ответ

Вам просто нужно держать stdin и stdout подключенными к чему-то полезному. Удостоверьтесь, что вы не демонизируете, и скажите, чтобы система регистрации не ввернулась с stdio.

В качестве альтернативы вы можете использовать отладчик, который не требует stdin и stdout. Например, с pudb:

import pudb.remote
pudb.remote.set_trace()

Кроме того, вы не спрашивали, но многопроцессорная и Twisted в основном несовместимы. Можно заставить их работать надежно вместе с большой, большой осторожностью - но обычно есть более простые способы сделать то же самое.

Другие вопросы по тегам