簡體   English   中英

如果使用強制步入,IntelliJ不顯示返回值?

[英]IntelliJ doesn't show return value if using Force Step Into?

我正在使用IntelliJ,只是想知道何時使用Force Step Into調試程序時, return value未顯示在“ Variables面板中。 我已啟用“ Show Method Return Values選項。 在此處輸入圖片說明

樣品:

    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;

    class Main {
        public static void main(String[] args) {
            Map<String, String> map = new HashMap<String, String>();
            map.put("Key", "Value");


            Iterator<String> itr = map.keySet().iterator();    // Debug this line

            while (itr.hasNext()) {
                System.out.println(itr.next());
            }
        }
    }

調試A (使用Force Step Into + Step Out ):我只單擊了force step into一次 在此處輸入圖片說明 ,然后單擊一次step out 在此處輸入圖片說明 ,我們可以看到keySet()returned value (主框架keySet()

在此處輸入圖片說明

然而,

如果我們不使用step out ,請調試B ,只需繼續按force step into 在此處輸入圖片說明 然后step out 在此處輸入圖片說明 直到我們完成最后一行代碼為止:

在此處輸入圖片說明

Variable面板上沒有顯示return value (主框架)( ksreturn value )。

在此處輸入圖片說明

難道我做錯了什么?


我試圖復制您在IntelliJ中所做的事情。 我發現的是,在使用Debug B選項的情況下,如果您不斷按“強制步驟”,則IntelliJ會不斷深入,這將需要很長時間才能使程序控件返回到返回值的位置在主要方法中。 但是,作為一個非常有耐心的人,我經歷了一下,發現最終控制確實返回到主方法,然后您將在變量面板中看到返回值。

我從本練習中得出的結論是,如果IntelliJ具有有關返回值的信息,那么它將顯示在調試控制台中。 為了使IntelliJ獲得該信息,它需要等待直到代碼塊完成執行。 通過“強制進入”,代碼塊需要更長的執行時間,因此我們不會立即看到返回值。 但是,通過執行“退出”,代碼塊完成,並且我們看到了返回值。

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM