У меня есть приложение на C ++, которое подключается через последовательный порт USB к микропроцессору (аналог Arduino).Я использую termios.h
в качестве серийного упаковщика.
Я отлаживаю с помощью cgdb
в Mac OS X 10.7.3
.
Когда я:
cgdb build/my-process
- Установить некоторые точки останова и т. Д., Выполнить отладку
- Найти ошибку или попытаться выйти все еще работает процесс с использованием
kill
внутри cgdb
процесс зависает.cgdb
отказывается когда-либо убивать процесс - просто сидит там.Я довольно уверен, что это потому, что если я kill
на полпути через приложение, я никогда не отпущу устройство /dev/ttyUSB
, через которое я получаю доступ к микроконтроллеру.Я не уверен, что что-то заблокировано и никогда не разблокировано, но cgdb
никогда не выходит.
Я пробовал:
- Основные прерывания: Ctrl + C
ps aux | grep 'my-process',
kill -9[PID] `. ps aux | grep cgdb
, kill -9 [pid]
. sudo
версий выше.
Ничто не убивает ни cgdb
, ни запущенный в нем процесс.
Если я отсоединяю USB-кабель (разрываю соединение с микропроцессором), (я думал, что это может привести к сбою сбойного процесса), я начинаю видеть, что используется ~ 50% доступного процессора (не уверен, на каком), и все блокируетсявверх.Мне не не удается вывести приложение из строя.
Как вы: (a) чисто выходите без , блокируя все с cgdb
или gdb
в процессе отладки процесса, или (b) убить / убрать (хотя 'cleanly' будет просто обледенением на торте) остановите процесс, который остановлен, пока вы отлаживаете, что не не отвечает на kill -9
без перезагрузки?