Я использовал отладчик Java в Intellij 8 и заметил, что кнопка маркировала "drop frame", кто-либо знает, какой цели это служит? Как/почему это использовалось бы/полезно?
Стек вызовов вашего приложения можно просмотреть в отладчике. Используя функцию "Drop Frame", можно "вернуться" к предыдущему кадру стека, в некотором смысле возвращаясь назад во времени. Это может быть полезно для повторного входа в функцию, если вы пропустили критическое место, которое хотели бы увидеть снова.
Как следует из названия "стековый кадр", изменения, которые уже были сделаны в глобальном состоянии (например, статические переменные, изменения значений полей и т.п.), не будут отменены, сбрасываются только локальные переменные. Это может привести к другому пути выполнения, чем тот, который первоначально привел к точке прерывания. Вы должны знать об этом - я часто считаю это полезной функцией для изучения различных путей выполнения без необходимости перезапуска приложения или определенного длительного процесса, который привел к текущему стеку. В сочетании с изменением значений переменных, также доступных через отладчик, вы можете делать всевозможные интересные вещи.
Обратите внимание, что, конечно, любые побочные эффекты, которые могли возникнуть - например, сетевой трафик, работа с файлами, вывод консоли и т.д. - не могут быть перемотаны.
Drop Frame в отладчике выталкивает текущий кадр стека и возвращает управление вызывающему {{1} }, сбрасывая любые локальные переменные. Это очень полезно для многократного выполнения функции, но имейте в виду: мутации полей или изменения глобального состояния будут оставаться.
См. Дополнительную информацию здесь .
Удаление кадров из стека с помощью отладчика, по сути, позволяет вам «перемотать» выполнение вашего приложения, чтобы достичь предыдущего состояния. Переменные вне кадра стека не возвращаются.
Кстати, я считаю, что эта функция в Eclipse называется «Перетащить в кадр», но она служит той же цели.