如何从代码中调用调试器?

时间:2014-11-25 19:26:59

标签: java eclipse

从Javascript,我可以简单地写

debugger;

当该行执行时,它会停止代码,就好像我在那里放了一个断点一样。

Java中是否存在等价物?我需要它专门在Eclipse中工作。

编辑:我们可以把它看作是我不是白痴,如果在IDE中放置一个断点是一个选项,我会这样做吗?

进一步编辑:我认为没有必要指出,因为使用IDE放置断点不是一个选项,任何围绕用IDE放置断点的答案都不太可能有用。如果每个人都好奇都死了,原始代码不是用Java编写的 - 它被处理成Java字节码。因此,Eclipse非常困惑,并不想设置断点。

3 个答案:

答案 0 :(得分:2)

Eclipse(主要)使用的JVM调试器可以在使用某些可选调试信息编译的 IF 方法中的行号处设置断点 OR 在方法入口处(总是)。

如果您的类是在没有调试“行”的情况下编译的,那么调试器无法设置换行符,并且您不想或不能重新编译它们,您仍然可以设置方法入口断点。在包资源管理器中 - 不是源的编辑窗口 - 右键单击​​方法名称/签名并将“切换方法断点”切换为打开。

这可以与@ajp的评论结合使用:添加方法,例如void [static] debugger(){}在调用它时不执行任何操作,但提供了一个方便的目标,您可以在其中设置方法断点。

警告:尽管可以使用部分调试信息进行编译,例如调试“vars”但不调试“行”,通常人们只使用“debug on”或“debug off”。如果您的类是在没有调试“vars”的情况下编译的,那么调试器 的用处就越少。

答案 1 :(得分:0)

我可能会得到一些downvotes,但就这样吧......

如果您在Eclipse中打开源文件并右键单击文档视图的左边缘,您将看到下图中所示的弹出菜单。

enter image description here

如您所见,您可以选择切换断点,也可以关闭和打开行号。所以,我不确定你的意思是“我的Eclipse正在一个无法在源代码中找到行号的环境中运行”。除非你有一些修改版的Eclipse没有显示这个菜单,否则我不知道你的意思。选项就在那里。

答案 2 :(得分:0)

你写道:

<块引用>

从Javascript,我可以简单地写

debugger;

当该行执行时,它会停止代码,就像我在那里放置了一个断点一样。

还有:

<块引用>

我们可以认为我不是白痴吗? IDE 本身的断点是一个选项,我本来已经 这样做了吗?

选项 1:简单的“不正确”答案是 Java 语言中没有指令让程序在断点处暂停,也没有像 C++ 这样的语言中的选项 进行调试构建。因此,您的“唯一”选项是从 IDE 执行断点。

选项 2:复杂而正确的答案是您可以按照以下说明进行操作:https://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html

就您的情况而言,我不认为您无法在 IDE 中设置断点来调试您的程序;不管你的程序有多复杂。但是,我不是来辩论这一点的。根据您的帖子,您必须执行此处列出的选项 2。