在Eclipse中,我想在Java default constructor上设置断点。我不能简单地双击任何代码行的左边,因为默认构造函数没有源代码 - 它们是由Java编译器隐式生成的。
我希望能够设置这样一个断点,而无需修改现有代码。
答案 0 :(得分:16)
如果要在其中设置断点的代码位于构建路径而不是项目本身,那么如果打开 Outline 视图,您将看到默认构造函数存在,您可以右键单击它并选择切换方法断点。
请注意,有时默认构造函数会从 Outline 视图中过滤掉。在这种情况下,可以通过更改过滤器设置来包含它。这可以通过转到大纲视图菜单→过滤器...... →取消合成成员来完成。
这是在Eclipse Indigo中,我不知道这个功能有多长时间了。
答案 1 :(得分:8)
如果确实需要它,请在类的其他方法之一中设置方法断点,选择断点(断点视图)并将其导出。编辑此文件,使断点指向标准构造函数。至少必须改变以下属性(伽利略):
value="<init>"
value="()V"
可能更容易从其他类导出构造函数断点以查看正确的值。现在导入更改的文件,你应该有你的构造函数断点。
这是一个黑客,但为我工作......
答案 2 :(得分:5)
如果你有任何带有初始值设定项的成员变量,那么你可以在它们上面加一个断点。例如:
class MyClass {
private int i = 0; // this line can have a breakpoint in Eclipse
}
如果你只使用一次这个断点,那么你可以使用class load breakpoint:
您可以设置类加载断点, 这课将在课时停止 被遗弃[原文如此]。右键单击一个类 在Package Explorer中,Project 资源管理器或类型视图并选择 “切换类加载断点”
顾名思义,这个断点将在首次加载类时被点击,因此它只会触发一次(假设你只有一个类加载器)。但根据您的需求,它可能已经足够了。
答案 3 :(得分:5)
我想对rsp给出的答案做一点改进,使其更容易一些,但我还不能发表评论。
如果您创建默认构造函数(例如,通过按ctrl + alt + s然后按c),将breakPoint放在对此构造函数的调用中,然后按ctrl + z撤消创建默认构造函数。 ll仍然有断点而代码没有变化。
希望有所帮助
答案 4 :(得分:1)
您始终可以创建自己的无参数构造函数并将断点放在那里。但更重要的是,为什么要在那里设置断点?它将简单地链接到无参数super()
。如果那有您关心的代码,请将断点放在该构造函数中。
答案 5 :(得分:1)
您可以执行以下操作:
public class MyClass {
public MyClass() {
super();
}
}
然后把断点放在那上面。但是,你希望通过这个来完成什么?
答案 6 :(得分:1)
如何创建公共无参数构造函数并在其上设置断点?如果这没有帮助,你能详细说明原因吗?
答案 7 :(得分:0)
您可以考虑YouDebug框架,以编写调试会话脚本,包括任何类的任何特定方法的断点。
断点是在目标JVM中发生特定事件时调用的事件回调处理程序。您可以通过调用'vm'对象上的断点方法来创建断点。这些方法采用在事件发生时调用的闭包,并且它们通常采用其他参数来控制断点的性质。
以下代码在
org.acme.SubStringTest.java
的第7行定义断点(或者在此类中定义的源文件:)
vm.breakpoint("org.acme.SubStringTest",7) {
println "I'm at SubStringTest.java line 7";
}
答案 8 :(得分:0)
您最好的选择可能是使用基于方面的框架来注入课程中所需的功能。
我认为Eclipse提供了一个默认的构造函数断点,但是只有在大纲中加载了类的断点。
您需要解决什么问题?