当我在 Eclipse 中调试时,经常会发生调试器崩溃,显示错误消息“未找到源”(其下方是带有文本“编辑源查找路径”的按钮)。我以前在网上搜索过这个问题的解释/解决方案,但没有发现对我有帮助。
但是,我现在已经弄清楚我的情况发生了什么:当逐行单步执行代码,然后退出正在运行的代码块时发生错误。我不知道术语,但我猜许多应用程序可能会在某个时候进入“待机模式”,此时没有任何代码正在运行。一个示例是等待鼠标单击的图形应用程序。在 MouseListener 方法中的断点处停止,然后退出它(进入“待机模式”)将在我的情况下导致错误。
我在这个问题的底部提供了一个 MWE。当我在该行放置断点时发生错误
System.out.println("You clicked!");
并使用 F6(“Step Over”)逐行退出该方法。如果我在侦听器的最后一行按 F8(“恢复”)而不是 F6,调试器不会崩溃,一切都很好。
我的问题是:在这种情况下,为什么 Eclipse 会做出如此严重的崩溃?我知道源代码中没有一行可以说程序控件在下面的示例中离开侦听器后“步入”,但是为什么不直接进入“待机模式”而不抱怨呢?我可以以某种方式停用此错误,以防止我的调试会话如此频繁地过早结束吗?或者当后者会导致崩溃时,我是否只需要记住按 F8 而不是 F6?
package app;
import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
public class TestFrame extends JFrame {
public TestFrame() {
getContentPane().setPreferredSize(new Dimension(200, 200));
getContentPane().addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("You clicked!");
}
});
pack();
}
public static void main(String[] args) {
JFrame testFrame = new TestFrame();
testFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
testFrame.setVisible(true);
}
}