我有个程序在跑一部分数据的时候可能会进入死循环,
我想看看是那些数据的问题,
但是数据量比较大,人工比较费时间,
所以想有没有程序可以检测死循环的?

解决方案 »

  1.   

    是这样的代码
    类似于
    for
     switch
      case 1
      case 2
      case 3在case中会改变for中的循环量i
    所以会出现死循环
    而且是一个单线程的程序, 所以就停下来了
    无法继续下一个
      

  2.   

    “可以用走迷宫的思路来重写你这个循环。
    循环过的数据做个标记,当下次再循环到这个数据时,可能就是进入到死循环了(当然也不一定),这个时候你可以采取一些措施避免进入死循环,同时记录下这个数据(也就是你说的“我想看看”的那部分数据)。”这个思路可以做啊,具体要你自己去写。
    或者你改变整个业务的实现思路,而不是仅仅盯在for循环这个小区域。
      

  3.   

    我以前数据多的时候会这样做:
    设记录循环次数的变量为i ,总次数为size
    if(i = size/5)
       System.out.println("times = "+ i);
    if(i = (size/5) *2)
       System.out.println("times = "+ i);
    ...
    ...
    这样相当于每1/5设一个断点。假如发现问题出现在2/5到3/5之间,也就是只打印到这之前就打印不了后面的语句了,就可以修改if的条件进一步在这个范围内查找。一步步锁定出问题的数据。
      

  4.   

    不知道 你的代码是什么。看了你的那个for和switch结构 就随便写了个程序你看下。不知道问题是不是那样。
    我在for中加了个变量temp。package Test;
    public class fortTest {
    public static void main(String[] args) {
    for (int i = 0, temp = 0; i < 20; i++, temp++) {
    if (temp != i)
    break;
    switch (i) {
    case 1:
    break;
    case 10:
    i = 6;
    System.out.println(i);
    break;
    case 3:
    break;
    }
    }
    }
    }