Подтвердить что ты не робот

При использовании отладчика Java в Intellij, что означает "Drop Frame"?

Я использовал отладчик Java в Intellij 8 и заметил кнопку с надписью "drop frame", кто-нибудь знает, для чего это служит? Как/почему это будет использоваться/полезно?

4b9b3361

Ответ 1

Стол вызовов вашего приложения можно просмотреть в отладчике. Используя функциональность "Drop Frame", вы можете "вернуться" к предыдущей структуре стека, в некотором смысле возвращаясь во времени. Это может быть полезно для повторного ввода функции, если вы пропустили критическое место, которое вы хотели бы видеть снова.

Как видно из названия "Stack Frame", изменения, которые уже были сделаны в глобальном состоянии (например, статические переменные, изменения значений полей и т.п.), не будут отменены, а только локальные переменные reset. Это может привести к другому пути выполнения, чем тот, который изначально привел к вашей точке разрыва. Вы должны знать об этом - я часто считаю его полезной функцией для изучения различных путей выполнения без необходимости перезапуска приложения или определенного длительного процесса, который привел к текущему стеку. В сочетании с изменением значений переменных, доступных также через отладчик, вы можете делать всевозможные интересные вещи.

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

Ответ 2

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

Подробнее здесь.

Ответ 3

Удаление кадров из стека с помощью отладчика по существу позволяет вам "перемотать" выполнение приложения для достижения предыдущего состояния. Переменные за пределами кадра стека не возвращаются.

Как замечание, я считаю, что эта функция называется "Drop to Frame" в Eclipse, но она служит той же цели.