Могу ли я узнать возвращаемое значение перед возвратом при отладке в Intellij? - PullRequest
101 голосов
/ 16 февраля 2011

С:

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

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

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

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

Ответы [ 4 ]

118 голосов
/ 12 апреля 2016

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

IntelliJ IDEA 2016.3

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

step into function

Шаг функции (или шаг пока вы не убежите):

step out

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

observe the return value

34 голосов
/ 16 февраля 2011

Существует Кнопка возврата значений метода , доступная на панели Отладчик .

Значения возврата метода : нажмите эту кнопкукнопка для просмотра значений возврата последнего выполненного метода.

watch method return values

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

IDEA 12

28 голосов
/ 16 февраля 2011

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

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

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

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

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

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

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

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

1 голос
/ 18 июля 2018

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...