2015-08-08 25 views
0

說,我有一個遞歸代碼如下,其中變量'resultshere'不斷在每次遞歸調用中得到更新。我希望從「previous」調用中看到該變量的值,即使它不在當前範圍內的短暫時間內,也沒有值(尚未)。在eclipse中不斷監視變量,即使它不在範圍內

如何在eclipse中做到這一點?

說我的代碼是這樣的:

public class Test { 

    public static void main(String[] args) { 
     System.out.println(fun(5)); 
    } 

    static int fun(int n) { 
     int resultshere = 0; 
     int ret = 0; 

     if (n == 0) { 
      resultshere = 1; 
      return resultshere; 
     } 

     ret = fun(n - 1); 
     resultshere = n * ret; 

     return resultshere; 
    } 

} 
+0

請參閱此鏈接http://abhijitjana.net/2010/10/20/how-to-track-an-object-which-is-out-of-scope-while-debugging/ –

回答

2

當在Eclipse中調試你總是看到堆棧跟蹤。堆棧跟蹤顯示了一個接一個地調用的方法。對於遞歸調用,您將看到被調用同樣的方法:

Debug View - Stacktrace

這裏你可以看到三個電話到fun方法。第三個調用突出顯示,並且您看到參數n的值爲3(在變量視圖中)。


如果你現在在前面的調用感興趣,只需選擇方法叫你希望:

Debug View - Previous Method

這裏你可以看到所選的第一個方法調用,現在你看到所有的變量(和參數) - 這個方法調用 - 在變量視圖中。

+0

謝謝,這是太棒了,從來不知道只要點擊它就可以看到前一幀中的變量。但我有兩個問題。 1.當n == 0時的調用返回前一個調用(幀)的某個值時,它將被推出調用堆棧,並且在您提到的調試視圖中我無法再看到它。即使在返回之後,是否仍然可以看到這些? 2.我的調試視圖與我之前調試過的調用混淆,也許我該如何清除這些? – PepperBoy

+1

如果方法調用返回,它也會從調試視圖中消失,因爲它不再分配堆棧。這也意味着你不能再訪問局部變量,因爲它們也消失了。 – Seelenvirtuose

相關問題