我试图在Eclipse插件中以编程方式设置断点。它似乎工作正常;标记将添加到编辑器侧栏,并且breakboint条目也会添加到“断点”视图中。但是当我调试程序时,VM不会在断点处挂起。此外,如果我在调用getNormalFlowFunction
之前暂停VM,然后尝试进入
该方法,VM突然恢复并运行直到程序结束。不幸的是,没有错误消息。
我认为,我的参数有问题,但是根据我发现的文档和示例代码,我无法分辨,出了什么问题。有什么想法吗?
以下是我设置断点的方法
IJavaMethodBreakpoint breakpoint = JDIDebugModel.createMethodBreakpoint(resource, className, methodName, methodSignature, entry, exit, nativeOnly, lineNumber, charStart, charEnd, hitCount, register, attrs);
我使用这些参数值:
resource: L/code/src/code/Main.java
class: Main
method: getNormalFlowFunction
signature: (QString;)QString;
resource: L/code/src/code/Main.java
entry: true
exit: false
nativeOnly: false
line: 12
charStart: 248
charEnd: 405
hit count: 0
register: true
attrs: {}
目标类如下所示:
package code;
public class Main {
public static void main(String[] args) {
System.out.println("Hello World");
System.out.println("Bla");
String outSet = getNormalFlowFunction("Hallo");
System.out.println(outSet);
anotherMethod();
}
public static String getNormalFlowFunction(String inSet) {
System.out.println("getNormalFlowFunction");
String outSet = inSet + inSet;
return outSet;
}
public static void anotherMethod() {
System.out.println("Another method");
}
}
修改: 我还注意到,当我在启动调试器之前手动设置断点时,手动设置的断点会获得一个小的复选标记,但我的编程设置断点不会。
答案 0 :(得分:0)
事实证明,我的参数存在一些问题。我不得不调试JDT来找出参数必须如何看起来像
以下是参数的更新列表:
resource: L/code/src/code/Main.java
class: code.Main
method: getNormalFlowFunction
signature: (Ljava/lang/String;)Ljava/lang/String;
resource: L/code/src/code/Main.java
entry: true
exit: true
nativeOnly: false
line: 12
charStart: 269
charEnd: 290
hit count: 0
register: true
attrs: null