종료 화면에서 프로그램 실행 중인 GDB 종료

종료 화면에서 프로그램 실행 중인 GDB 종료

저는 프로그램을 실행하기 위해 screen과 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명령을 통해 확인). 화면이 종료될 때 화면을 종료할 수 있는 방법이 있습니까?

편집하다:MarkPlotnick이 요청한 대로 내 화면은 Screen version 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

답변1

MarkPlotnick의 의견에서 제안한 대로 -ex quitgdb 명령을 추가했는데 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.

추신: -ex quit.gdb 명령을 호출하면 이 옵션이 더 이상 필요하지 않습니다 screen ... stuff.

관련 정보