Sair do programa executado pelo GDB quando terminar a tela

0

Estou executando meu programa usando a tela e o GDB.
Como eu corro meu programa:

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

Em run-adapter.sh

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

O problema é quando tento sair do meu programa por tela:

screen -X -S adapter quit

A tela termina bem, mas o programa e seu GDB ainda permanecem (verificado pelo comando ps aux ). Há alguma maneira de sair deles quando minha tela é encerrada?

Editado: Como o MarkPlotnick solicitou, minha tela é Screen version 4.00.03d (FAU) 23-Oct-06 e o GDB é GNU gdb (GDB) 7.7 .
Saída de grep Sig /proc/$(pgrep Adapter)/status :

SigPnd: 0000000000040000
SigBlk: 0000000000000000
SigIgn: 0000000001001000
SigCgt: 0000000180000620
    
por Anh Tuan 04.10.2017 / 13:09

1 resposta

0

Como sugerido pelo comentário de MarkPlotnick, adiciono o comando -ex quit in gdb e ele funcionou no OpenSUSE 13.1. O comando de execução completo é:

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

E para sair da tela com o gdb automaticamente sair, eu uso:

screen -X -S adapter quit

Infelizmente, os mesmos comandos não funcionaram quando atualizei o SO para o OpenSUSE 42.2. Depois de um pouco de investigação, agora posso sair com:

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

O comando stuff enviará um sinal Ctrl-C (SIGINT) para finalizar o processo adapter . Depois disso, podemos sair normalmente chamando screen ... quit .

PS: A opção -ex quit no comando gdb não será mais necessária se chamarmos screen ... stuff .

    
por 24.07.2018 / 12:34