启动线程中的错误调试器

我使用以下技巧让调试器启动时出错错误时自动启动python调试器

任何想法如何使这也适用于新创建的线程中发生的错误? 我正在使用线程池,像http://code.activestate.com/recipes/577187-python-thread-pool/


我会说在每个线程的运行开始()注入代码。

如果你不想改变这个代码,你可以像这样做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
链接地址: http://www.djcxy.com/p/39407.html

上一篇: Starting debugger on errors in threads

下一篇: How to turn off the Eclipse code formatter for certain sections of Java code?