2

エラー時にデバッガーを開始するために次のトリックを使用していますエラー 時にPythonデバッガーを自動的に開始します

新しく作成されたスレッドで発生するエラーに対してもこれを機能させる方法はありますか? http://code.activestate.com/recipes/577187-python-thread-pool/のようなスレッドプールを使用しています

4

1 に答える 1

2

各スレッドの 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
于 2012-06-12T15:58:27.523 に答える