Чи можу я дізнатися значення повернення перед поверненням під час налагодження в Intellij?


127

З:

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

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

Як мені зробити це зараз, зробивши тимчасову змінну: Object ret = /* something complex */; return ret;. Але це клопоту, а також додає зайвий непотрібний рядок коду.

Примітка: Це те саме питання, що і чи можу я дізнатися значення повернення перед поверненням під час налагодження у Visual Studio , але для Intellij.

Відповіді:


31

Здається, є кілька способів зробити це. Перший включає встановлення точки підриву на підписі методу, у вашому випадку ви встановите точку розриву на метод Object () {. Це дозволить стежити за входом і виходом методу. Я вважаю, що вам доведеться використовувати це в поєднанні із " наведеними вище значеннями методу перегляду" , але я не зміг повністю перевірити це, оскільки для обчислення потрібне занадто багато часу. Будьте обережні, це значно зменшує продуктивність налагоджувача, і це займе більше часу для налагодження.

Також ви можете зробити наступне вручну.

  1. Встановіть точку розриву на зворотній лінії.
  2. Коли рядок повернення натиснуто, клацніть на лінії повернення, спеціально поставте курсор на ту операцію, яку ви хочете побачити, а потім перейдіть до пункту Виконати-> Оцінити вираз (або Alt-F8), і він повинен запустити вираз у цій точці і повернути те, що повертається.

Примітка . Якщо ви створюєте точку розриву, ви можете сказати IDEA зробити з ними багато речей, наприклад, якщо ви перервитесь на точку розриву, ви можете сказати їм виконати вираз і записати його. Ви можете озирнутися з тим, що можна зробити, якщо клацнути правою кнопкою миші на точці розриву та натиснути на властивості.

ОНОВЛЕННЯ : Спробуйте це в поєднанні з першим способом. Не використовуйте значення "Метод перегляду повернення", оскільки це, здається, сповільнить або заморозить сесію налагодження. Замість цього виконайте наступне

  1. Клацніть правою кнопкою миші повернення, яке ви хочете побачити, і натисніть "Додати в годинник"
  2. Далі додайте метод точки розриву, як зазначено вище.
  3. Налагоджуйте програму, і ваш метод порушиться на підпис методу.
  4. Натисніть клавішу F9 для продовження, і вона повинна знову зламатися ПІСЛЯ обчисленого виразу повернення, а ваше вираження повернення має бути в стовпці годинника.

Пам’ятайте, що точки точки перерви повільніші, тому це може зайняти більше часу, а хитромудрий спосіб покращити це, якщо ви помітили занадто велике враження від продуктивності - просто встановити точку розриву оператора повернення (не маючи точки точки перелому методу), а потім додати метод точки перелому методу ПІСЛЯ повернення заяви про перерву, а потім продовження.

Сподіваюся, це допомагає,


1
Насправді, як тільки ви додали точку перерви та годинник до (новий X ()), ви можете просто зробити Alt + F8 на цьому годиннику, щоб "проаналізувати" повернутий об'єкт. Це дійсно корисно.
Кедар Массваде

Якщо я правильно це розумію, запропоноване рішення тут працює лише в тому випадку, якщо вираз не має побічних ефектів. Я точно не рекомендую вводити складні вирази у змінні / вікно перегляду загалом.
Машмагар

Принаймні з 2016.3 є набагато кращий спосіб. Детальну інформацію див. У відповіді від Birchlabs. Тепер це має бути прийнята відповідь.
Mikezx6r

151

На IntelliJ IDEA 2016.3: він прихований всередині кнопки зубців панелі налагодження. Переконайтеся, що Show Method Return Valuesце перевірено .

IntelliJ IDEA 2016.3 "Показати значення повернення методу"

Використовуйте відладчик, щоб перерватися десь усередині функції, повернене значення якої ви хотіли б бачити.

крок у функцію

Вийдіть із функції (або перейдіть до тих пір, поки не уникнете):

вийти

Зауважте, що значення повернення відображається у ваших змінних:

спостерігати повернене значення


3
@Stan Я оновив свою відповідь, щоб надати відпрацьований приклад.
Birchlabs

40

На панелі налагодження доступна кнопка повернення значень методу Watch .

Повернення значень методу перегляду : натисніть цю кнопку, щоб переглянути значення повернення останнього виконаного методу.

повернути значення методу watch

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

ІДЕЯ 12


2
Здається, нічого не відображається ні на вкладках "Змінні", ні на "Годинники". Я використовую Groovy, якщо це має значення. Крім того, це здається, що він покаже значення повернення останнього методу, виконаного з контексту коду виклику, а не з контексту самого методу. Важлива відмінність цього полягає в тому, що якщо ви можете бачити це з контексту самого методу, ви також можете переглянути значення локальних змінних методу. Це може дозволити вам побачити, що пішло не так, якщо метод повертає неправильне значення.
Кайл

3
Він показує повернене значення на панелі "Змінні" (використовуючи повністю кваліфіковану назву методу). Це мала бути прийнятою відповіддю. @CrazyCoder +1 від мене :-)
Omri Spector

4
@CrazyCoder: Чи існує ця функція для IDEA 13? Я не можу знайти це.
kevinarpe

1
Я на Intellij 15 і цього теж не бачу. Чи можете ви опублікувати скріншот?
Sanjiv Jivan

3
в січні 2017 року (Ідея 2016.3.2): вам потрібно натиснути на значок Налаштування (шестірня, праворуч над жовтим пунктом меню на другому зображенні), з'явиться меню, що включає в себе "Показати значення повернення значень методу". Не потрібно нічого перезавантажувати: після наступного повернення з методу його ObjectClassName.methodName () з'являється у вікні Змінні прямо під цим .
18446744073709551615

1

Це було запитано деякий час тому, але я використовую інший метод, коли хочу вирішити цю ситуацію.

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


2
Якщо ви використовуєте графічний чіп Intel, ця комбінація клавіш вимкне ваші окремі монітори .
Coli

1
Користувачі Linux: Ctrl + Alt + F8 - Відправить користувача до 2-го терміналу GUI. У Ubuntu я натиснув Ctrl + Alt + F2, щоб повернутися назад.
Дмитро Павлухін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.