我正在使用以下技巧来启动调试器错误 Starting python debugger automatically on error
任何想法如何使这也适用于新创建的线程中发生的错误?我正在使用线程池,类似于http://code.activestate.com/recipes/577187-python-thread-pool/
答案 0 :(得分:2)
我会说在每个Thread的run()开始时注入该代码。
如果您不想更改该代码,可以执行monkeypatch,例如像这样:
Worker.run = lambda *a: [init_pdb(), Worker.run(*a)][-1]
或者像这样:
def wrapper(*a):
# init pdb here
Worker.run(*a)
Worker.run = wrapper
如果你想要真正的硬核,你可以在导入其他模块之前完全覆盖threading.Thread.start,或者可能是threading.Thread,例如:
class DebuggedThread(threading.Thread):
def __init__(self):
super(DebuggedThread, self).__init__()
self._real_run = self.run
self.run = self._debug_run
def _debug_run(self):
# initialize debugger here
self._real_run()
threading.Thread = DebuggedThread