【问题标题】:Breakpoint in loop after large number of iterations in EclipseEclipse中大量迭代后循环中的断点
【发布时间】:2013-10-13 12:57:12
【问题描述】:

假设我有以下代码。在调试时,我希望 Eclipse 在完成 100 万次迭代后停止。这个怎么做?我不能手动做 100 万次。

for(int i = 0; i < 10000000; i++) {
    //some code
}

【问题讨论】:

  • 我可以在循环中放一个 if(i == 1000000) 并在那里中断。有没有办法在不改变代码的情况下做到这一点?

标签: java c eclipse debugging loops


【解决方案1】:

你可以在eclipse中设置条件断点:

  1. 设置断点
  2. 右键->属性
  3. 启用“条件”复选框
  4. 放置条件代码

    i == 1000000

【讨论】:

  • 当你没有一个变量来检查它的值时怎么办?例如,当您从带有while(fileScanner.hasNext()) 的文件扫描器中读取行时?阅读一定数量的行后如何停止?
【解决方案2】:

在这种情况下,请执行以下操作:

for(int i = 0; i < 10000000; i++)
{
    if(i==1000000){
       // do nothing  ....
       // this is just a dummy place to make eclipse stop after million iterations
       // just put a break point here and run the code until it reaches this breakpoint
       // remove this if condition from your code after you have debugged your problem
    }

    //your code
}

【讨论】:

    【解决方案3】:

    我知道我正在坏死,但我正在回答@Anarelle 在the currently accepted answer 上关于在没有可用变量时停止的问题。这也回答了最初的问题。在 Eclipse 的条件断点窗口中(在 Debug Perspective 中),您可以单击 Hit count: 旁边的复选框,然后简单地给出断点在暂停执行之前应该“触摸”的次数。请注意,这不仅在循环之外起作用(例如,仅在我尝试此操作 3 次后才暂停调试),而且还考虑了外部循环。例如,在下面的代码中,如果我的命中计数是 20,那么在断点命中时,i 将是 6,j 将是 3:

    for (int i = 0; i < 100; i++) {
        System.out.println(i);
        for (int j = 2; j < 5; j++) {
            System.out.println(j);
        }
    }
    

    一旦断点被​​命中,它将被禁用,直到用户重新启用。换句话说,如果每次都重新启用,此功能还可用于每 20 次检查特定断点是否被命中。

    【讨论】:

    • 感谢您的编辑 - 我自己通常不使用 Debug Perspective,所以我经常忘记大多数用户不会在他们的正常视图中看到这些东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多