我有一个在 Linux 服务器上运行的多线程 Python 应用程序。我可以使用 PyDev 的调试服务器对其进行远程调试,这似乎是一个非常有价值的调试资源。但是,我发现有一个问题阻止它像我想要的那样有用。
当我的应用程序在服务器上运行时,我可以在另一个盒子上进入 Eclipse,暂停 MainThread,获得一个很好的堆栈跟踪它当时的状态,然后恢复执行。这很棒。但是,当我在其中一个子线程上尝试时,挂起按钮变灰,但没有堆栈跟踪,一切都继续正常运行。我可以在“调试”窗口中看到有一个子线程并且它是 PID,但无法真正控制它或查看它在做什么。右键单击并尝试听起来很有帮助的“复制堆栈”只会给我“Thread-4 - pid29848_seq5”。
断点似乎工作正常。如果子线程遇到其中一个,我可以单步执行并观察变量等。然而,有效地使用它需要我已经对代码有一个特定的兴趣点。我真的更希望运行我的应用程序,当它进入异常状态时,使用 PyDev 查看发生了什么。
我的设置有问题吗?这只是我所面临的 PyDev 的限制吗?我怎样才能看到子线程发生了什么?