【问题标题】:Debugging java for loop: skip to a specific iteration调试java for循环:跳到特定的迭代
【发布时间】:2012-07-20 06:44:17
【问题描述】:

我正在 Netbeans 中开发一个 java 项目。我有一个运行 29 次的 for 循环,每次迭代大约需要 1 分钟才能完成。问题出在循环的第 29 次迭代中。有什么方法可以跳过前 28 次迭代并直接转到有问题的迭代?

我知道我可以设置一个条件断点,但这会使调试器跳过迭代,它只是在达到特定迭代时通知我。

请帮忙!否则,这将花费大量时间来调试!

【问题讨论】:

    标签: java debugging netbeans for-loop


    【解决方案1】:

    您可以使用Java Platform Debugger Architecture 之类的东西。这可能会有所帮助。另一方面,您可以这样做:

    for (int i = 0; i < ...; i++)
    {
        if (i == 28)
        {
             System.out.println("Line Found"); //put breakpoint here
        }
    
        //remainder of the code.
    }
    

    这应该允许您在循环的第 29 次执行时触发断点,然后您可以使用调试器提供的步进函数来检查第 29 次迭代的代码。

    我从未使用过 JPDA,即使我使用过,我认为最简单直接的解决方案是执行类似上述代码的操作。

    【讨论】:

      【解决方案2】:

      您可以在循环中放置一个临时代码行,并在其上放置一个断点:

      if (i=29) {
          // Put a breakpoint on this line (only hit if i=29)
      }
      

      【讨论】:

        【解决方案3】:

        更改循环条件。

        for (int index = 27; index < 28; index++) {
        
            ...
        
        }
        

        【讨论】:

        • 我实际上是这样迭代循环的: for(String imageToDownload : imageURLList) 但你说得对,我可以得到列表的长度,然后对其进行调试。只是想知道调试器中是否有任何功能可以在不更改代码的情况下做到这一点。
        • 然后呢?改变循环条件?完成后,将其更改回来。反正你只对倒数第二次迭代感兴趣
        猜你喜欢
        • 1970-01-01
        • 2014-08-30
        • 2013-05-21
        • 1970-01-01
        • 1970-01-01
        • 2021-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多