Сигналы при отладке

Я разрабатываю приложение (на самом деле сервис / демон) в Linux на C ++, которое должно взаимодействовать с частью оборудования. Если моя программа не высвобождает чисто ресурсы для этой части оборудования при завершении работы, то мне придется перезагрузить драйвер устройства, процесс, который занимает около 10 минут, и по очевидным причинам необходимость ожидания 10 минут между каждым тестом программы будет

Итак, я использовал функцию sigaction () , чтобы поймать SIGINT (ctrl-c), чтобы моя программа могла корректно завершиться, когда я закончу с ней. При запуске программы с консоли это нормально работает. Однако при отладке в Netbeans или Eclipse (я пробовал оба) ничего не работает.

  • В Eclipse, если я нажимаю ctrl-c в консоли, которую он предоставляет, похоже, не регистрируется, что SIGINT когда-либо произошло
  • В Eclipse, если я запускаю программу в режиме отладки, а затем использую kill -SIGINT , программа просто прерывается, как если бы она достигла точки останова
  • Netbeans, кажется, действительно понимает, что сигнал был отправлен, когда я нажимаю ctrl-c в консоли, и выдает диалоговое окно с вопросом, хочу ли я переслать его приложению. Нажатие кнопки «Вперед и продолжить» просто нарушает работу программы, и приложение не получает сигнал. В нем также говорится, что я могу настроить это в Debug -> Dbx configure, пункте меню, которого не существует
  • В Netbeans, если я запускаю программу в режиме отладки, а затем использую kill -SIGINT , поведение такое же, как описано выше
  • Затем я добавил обработчик SIGQUIT и попытался отправить его через kill при отладке в Netbeans. На этот раз диалоговое окно не появляется, и обработчик сигналов никогда не срабатывает.

Мне нужен какой-нибудь способ полностью завершить работу моего приложения во время отладки. Есть идеи?

10
задан Frederik 26 May 2011 в 09:36
поделиться