it-swarm-ru.tech

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

С:

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

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

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

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

101
Kyle

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

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

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

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

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

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

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

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

28
jluzwick

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

IntelliJ IDEA 2016.3 "Show Method Return Values"

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

step into function

Выход из функции (или переход до выхода):

step out

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

observe the return value

118
Birchlabs

На панели панель отладчика имеется кнопка , возвращающая значения метода .

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

watch method return values

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

IDEA 12

34
CrazyCoder

Это было задано некоторое время назад, но я использую другой метод, когда я хочу справиться с этой ситуацией.

При отладке вы можете пометить выражение (в вашем случае выражение сразу после "возврата") и нажать CTRL + ALT + F8 (выражение быстрой оценки). IntelliJ откроет маленькое окно, показывающее вам значение, которое будет возвращено.

1
Ozilophile