Могу ли я узнать возвращаемое значение перед возвратом во время отладки в Intellij?

С

Object method(){
    ...
    return /* some complex expression */
}

Есть ли способ увидеть, какое значение будет возвращено во время отладки? Как-то установить точку останова, которая будет ударяться сразу после возвращения, но до того, как выполнение перейдет к вызывающему коду? Я хотел бы узнать, что такое возвращаемое значение, а также узнать, какие значения всех локальных переменных есть.

Теперь я делаю это, создавая временную переменную: Object ret = /* something complex */; return ret;. Но это хлопот, а также добавляет лишнюю строку кода.

Примечание. Это тот же вопрос, что и Могу ли я узнать возвращаемое значение перед возвратом во время отладки в Visual Studio, но для intellij.

Ответ 1

Кажется, есть несколько способов сделать это. Первая из них связана с настройкой точки останова на сигнатуре метода, в вашем случае вы должны установить точку останова на Object method() {. Это позволит вам следить за входом и выходом метода. Я считаю, что вы должны использовать это в сочетании с " Watch method return values" , как указано выше, но я не смог полностью протестировать это, поскольку он слишком долго вычисляется. Помните, что это значительно снижает производительность отладчика, и отладка займет больше времени.

Также вы можете сделать следующее вручную.

  • Настройка точки останова на обратной линии.
  • Когда возвращается обратная линия, нажмите на обратную линию, в частности, поставьте курсор на операцию, которую вы хотите просмотреть, затем перейдите в Run- > Evaluate Expression (или Alt-F8), и она должна запустить выражение в этот пункт и вернуть то, что он возвращает.

Примечание. Если вы создаете точку останова, вы можете сказать, что ИДЕЯ может сделать с ними, например, если вы сломаете точку останова, вы можете сказать им выполнить выражение и запишите его. Вы можете посмотреть вокруг, что вы можете сделать, если вы щелкните правой кнопкой мыши точку останова и щелкните свойства.

UPDATE: Попробуйте это в сочетании с первым способом сделать это. Не используйте "Возвращаемые значения метода Watch", поскольку это замедляет или приостанавливает сеанс отладки. Вместо этого сделайте следующее

  • Щелкните правой кнопкой мыши на возвращаемом выражении, которое вы хотите увидеть, и нажмите "Добавить в часы"
  • Затем добавьте точку останова метода, как указано выше.
  • Отлаживайте свою программу, и ваш метод будет разбит на подпись метода.
  • Нажмите клавишу F9 для продолжения, и она снова сломается ПОСЛЕ, выражение return было вычислено, и ваше выражение return должно находиться в столбце watch.

Помните, что контрольные точки метода работают медленнее, поэтому может потребоваться больше времени, сложный способ улучшить это, если вы заметите слишком много ударов по производительности - просто установите контрольную точку оператора return (без наличия точки останова метода), а затем добавьте точка останова метода ПОСЛЕ, точка возврата точки возврата возвращает, а затем продолжает.

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

Ответ 2

В IntelliJ IDEA 2016.3: он скрыт внутри кнопки cog на панели отладки. Убедитесь, что установлен Show Method Return Values.

IntelliJ IDEA 2016.3

Используйте отладчик, чтобы сломать где-нибудь внутри функции, возвращаемое значение которой вы хотели бы видеть.

step into function

Выйдите из функции (или перейдите к ней, пока не убежате):

выйти

Обратите внимание, что возвращаемое значение появляется в ваших переменных:

наблюдать возвращаемое значение

Ответ 3

В панели отладки << → доступна Watch .

Возвращаемые значения метода часов: нажмите эту кнопку, чтобы посмотреть возвращаемые значения последнего выполненного метода.

watch method return values

Конфигурация IDEA 12:

IDEA 12