IntelliJ не показывает возвращаемое значение при использовании Force Step Into? - PullRequest
0 голосов
/ 24 сентября 2018

Я использую IntelliJ, просто хочу знать, когда мы отлаживаем программу с использованием Force Step Into, return value не отображается на панели Variables.Я включил опцию Show Method Return Values.enter image description here

Пример:

    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 один раз enter image description here, затем нажмите step out один раз enter image description here, они мы можем увидеть returned value (основной кадр) из keySet():

enter image description here

Однако,

Отладка B , если мы не используем step out, просто продолжайте нажимать force step into enter image description here и step out enter image description here.Пока мы не закончили работу с последней строкой кода:

enter image description here

на панели Variable (*) не отображается return value (основной кадр)1056 * это return value).

enter image description here

Я что-то не так делаю?


1 Ответ

0 голосов
/ 24 сентября 2018

Я пытался повторить то, что вы делаете в моем IntelliJ.Что я обнаружил, так это то, что в случае с вашей опцией Debug B, если вы продолжаете нажимать «force step into», то IntelliJ продолжает копать все глубже и глубже, и потребуется ОЧЕНЬ много времени, прежде чем программный элемент управления вернется к точке, в которой он возвращает значениев основном методе.однако, будучи очень терпеливым человеком, я прошел через это и обнаружил, что в конечном итоге управление возвращается к основному методу, и затем вы увидите возвращаемое значение на панели переменных.

Мой вывод из этого упражнения заключается в том, что если IntelliJ имеетинформация о возвращаемом значении затем отображается в консоли отладки.и для того, чтобы IntelliJ получил эту информацию, он должен дождаться завершения выполнения кода.с помощью «принудительного шага в» выполнение блока кода занимает больше времени, поэтому мы не видим возвращаемое значение сразу.Однако, выполнив «шаг», блок кода завершается, и мы видим возвращаемое значение.

Надеюсь, это поможет!

...