Как я могу заставить отладчик IntelliJ разрешить запуск перехватчиков выключения моего приложения?

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

(Обратите внимание, что это не дубликат Как мне остановить обработку, работающую в intelliJ, чтобы она вызывала перехватчики выключения?)

Когда я «вручную» отправляю процессу отладчика сигнал INT с терминала Mac, конечно, мои перехватчики завершения работы работают, как и ожидалось. Но мне не удалось обнаружить какие-либо параметры конфигурации или элементы управления в среде IDE, которые вызывают желаемое поведение.


person Tommy Knowlton    schedule 09.07.2014    source источник


Ответы (1)


Пожалуйста, просмотрите соответствующую проблему в системе отслеживания ошибок JetBrains.

Я только что проверил это на Idea 14.0.2 - кнопка «Стоп» работает изящно, поэтому выполняются перехватчики выключения.

К сожалению, вы не можете использовать точки останова в теле хука выключения, когда используете кнопку «Стоп»: эти точки останова молча игнорируются.

Если вам нужно отладить код обработчика завершения работы (т. е. остановить работу в точках останова), вы можете корректно завершить работу приложения в режиме отладки IDEA, вызвав команду из терминала:

kill -INT <pid>

где pid — это идентификатор процесса вашего приложения, который можно найти, например, с помощью следующей команды:

ps ax | grep java | grep <MainClassNameYouRun>

В этом случае IDEA остановится на точках останова в хуке выключения.

person Daniil Penkin    schedule 19.12.2014
comment
К сожалению, вы не можете использовать точки останова в теле хука завершения работы. Вот для чего я пришел сюда. Спасибо. - person muttonUp; 10.09.2015