エラー時にデバッガーを開始するために次のトリックを使用していますエラー 時にPythonデバッガーを自動的に開始します
新しく作成されたスレッドで発生するエラーに対してもこれを機能させる方法はありますか? http://code.activestate.com/recipes/577187-python-thread-pool/のようなスレッドプールを使用しています
エラー時にデバッガーを開始するために次のトリックを使用していますエラー 時にPythonデバッガーを自動的に開始します
新しく作成されたスレッドで発生するエラーに対してもこれを機能させる方法はありますか? http://code.activestate.com/recipes/577187-python-thread-pool/のようなスレッドプールを使用しています
各スレッドの 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