При использовании отладчика Java в Intellij, что “Отбрасывание Структурирует” средний?

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

86
задан skaffman 2 March 2010 в 23:55
поделиться

3 ответа

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

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

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

115
ответ дан 24 November 2019 в 08:05
поделиться

Drop Frame в отладчике выталкивает текущий кадр стека и возвращает управление вызывающему {{1} }, сбрасывая любые локальные переменные. Это очень полезно для многократного выполнения функции, но имейте в виду: мутации полей или изменения глобального состояния будут оставаться.

См. Дополнительную информацию здесь .

13
ответ дан 24 November 2019 в 08:05
поделиться

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

Кстати, я считаю, что эта функция в Eclipse называется «Перетащить в кадр», но она служит той же цели.

7
ответ дан 24 November 2019 в 08:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: