Rob*_*bAu 7 java eclipse debugging breakpoints
我正在调试一个执行大量方法调用的应用程序.我想,例如,调试methodA
.它被称为1000次.
但是,在我的主循环中,我只想在几个语句之后开始调试方法A.
public void methodA()
{
//does something nasty that I want to debug
}
public static void main( String[] args )
{
for (int i=0; i<1000; i++)
{
methodA();
}
methodB();
methodA();
}
Run Code Online (Sandbox Code Playgroud)
我想在被叫methodA
之后 才开始打破methodB
.我真的不想改变我的代码(例如,插入一个boolean
值并使断点成为条件boolean
).
这样的东西在Eclipse中可能吗?还是有更好的选择?
A)简单地使用命中计数为1000.
仅当for循环中的methodA不在某些条件下时,它才有效.
B)使用条件
将断点放在methodA.Refer图像中的第一个语句处
[这里方法A ==测试,我把断点放在第14行]
右键单击断点并选择Breakpoint properties
选项并添加以下条件.
StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace();
StackTraceElement e = stacktrace[2];
return (e.getLineNumber() == 9);
Run Code Online (Sandbox Code Playgroud)
这里的9表示第二次调用methodA(或test)的行号.在代码中找出相同的内容并更改它.
检查用于StackTraceElement的javadoc,而不是行号,您也可以使用方法名称.即,只有在从函数调用时才能中断xyz
.
C)等待日食氧气(4.7)
在Eclipse的下一个版本中,JDT将在断点上提供触发点.因此,只有在断点x被击中之前,你才可以说击中断点y.
有了这个,您只能在给定的方法流[stacktrace]上暂停断点.
例如:只有当呼叫流程为:时才能在断点处停止:
methodA() --> methodB() --> methodC() --> methodD()
不开
methodA() --> methodC() --> methodD()
等等
有关详细信息,请参阅此错误.添加您对此错误的评论/建议.
归档时间: |
|
查看次数: |
2608 次 |
最近记录: |