Gnu-Screen

終止螢幕時退出 GDB 執行的程序

  • July 24, 2018

我正在使用螢幕和 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

正如 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.

引用自:https://unix.stackexchange.com/questions/396036