Gnu-Screen
終止螢幕時退出 GDB 執行的程序
我正在使用螢幕和 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
.