Выйти из программы, выполняемой GDB при завершении screen

I Я запускаю свою программу, используя экран и GDB.
Как я запускаю свою программу:

screen -dmS adapter "./run-adapter.sh"

В run-adapter.sh

gdb -ex "handle SIGPIPE nostop noprint pass" -ex run -args ./Adapter adapter.conf

Проблема в том, когда я пытаюсь выйти из своей программы с помощью экрана:

screen -X -S adapter quit

Экран завершается нормально, но программа и ее GDB не работают. все еще остается (проверено командой ps aux ). Есть ли способы выйти из них, когда мой экран отключен?

Отредактировано: Как и просил МаркПлотник, мой экран имеет вид Версия экрана 4.00.03d (FAU) 23-Oct-06 , а GDB - GNU gdb (GDB) 7.7 .
Вывод grep Sig / proc / $ (pgrep Adapter) / status :

SigPnd: 0000000000040000
SigBlk: 0000000000000000
SigIgn: 0000000001001000
SigCgt: 0000000180000620
0
06.10.2017, 05:19
1 ответ

Как было предложено в комментарии MarkPlotnick, я добавляю -ex quitв команду gdb, и это работает в OpenSUSE 13.1. Полная команда выполнения:

gdb -ex "handle SIGPIPE nostop noprint pass" -ex run -ex quit -args./Adapter adapter.conf

И чтобы выйти из экрана с автоматическим выходом gdb, я использую:

screen -X -S adapter quit

К сожалению, те же самые команды не работали, когда я обновлял ОС до OpenSUSE 42.2. После небольшого расследования теперь я могу выйти с помощью:

screen -X -S adapter stuff "^C" screen -X -S adapter quit

Команда stuffотправит сигнал Ctrl -C (SIGINT )для завершения процесса adapter. После этого мы можем нормально выйти, позвонив screen... quit.

PS :Опция -ex quitв команде gdb больше не нужна, если мы вызываем screen... stuff.

0
28.01.2020, 04:38

Теги

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