我正在尝试调试 Python 子进程(使用多进程启动)。我只使用以下代码创建了一个更简单的项目,启动了远程调试器,然后启动了该项目。我希望 Eclipse 能够打破 settrace 语句。
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()
我看到了第一个打印语句的输出,但没有看到第二个,并且没有执行中断。
然后我用 False 发送 settrace() 的“suspend”参数。
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()
这一次,我按预期看到了两条消息。然后我在第二个打印语句上设置了一个断点,然后再次运行。现在,我不再看到第二条消息。
因此,看起来 Eclipse 在它应该的时候中断了执行,但没有将控制权交还给我。有什么我想念的吗?