Python サブプロセス (マルチプロセスで起動) をデバッグしようとしています。次のコードのみを含む単純なプロジェクトを作成し、リモート デバッガーを起動してから、プロジェクトを起動しました。settrace ステートメントで Eclipse が壊れることを期待しています。
import multiprocessing
import pydevd
def new_proc():
print("New Procedure.")
pydevd.settrace()
print("After settrace.")
p = multiprocessing.Process(target=new_proc)
p.start()
p.join()
最初の print ステートメントからの出力は表示されますが、2 番目のステートメントからの出力は表示されず、ブレークは実行されません。
次に、settrace() に "suspend" パラメーターを False で送信しました。
import multiprocessing
import pydevd
def new_proc():
print("New Procedure.")
pydevd.settrace(suspend=False)
print("After settrace.")
p = multiprocessing.Process(target=new_proc)
p.start()
p.join()
今回は、両方のメッセージが期待どおりに表示されます。次に、2 番目の print ステートメントにブレークポイントを設定し、再度実行しました。これで、2 番目のメッセージは表示されなくなりました。
したがって、Eclipse が本来の実行を中断しているように見えますが、制御を私に返していません。私が見逃しているものはありますか?