![当设置程序在另一个终端上运行时,如何抑制GDB中的“无法设置控制终端”警告?](https://linux22.com/image/227245/%E5%BD%93%E8%AE%BE%E7%BD%AE%E7%A8%8B%E5%BA%8F%E5%9C%A8%E5%8F%A6%E4%B8%80%E4%B8%AA%E7%BB%88%E7%AB%AF%E4%B8%8A%E8%BF%90%E8%A1%8C%E6%97%B6%EF%BC%8C%E5%A6%82%E4%BD%95%E6%8A%91%E5%88%B6GDB%E4%B8%AD%E7%9A%84%E2%80%9C%E6%97%A0%E6%B3%95%E8%AE%BE%E7%BD%AE%E6%8E%A7%E5%88%B6%E7%BB%88%E7%AB%AF%E2%80%9D%E8%AD%A6%E5%91%8A%EF%BC%9F.png)
我正在使用 GDB 来调试程序,并且希望将其输出定向到与运行 GDB 的终端不同的终端。这就是我一直在做的事情:
- 打开第二个终端,使用 检查其设备名称
tty
,并获得类似 的内容/dev/pts/14
。 - 在我的 GDB 会话中,我使用命令
tty /dev/pts/14
将输出设置到该终端。 - 然后我
run
在 GDB 中发出命令来启动程序。
此设置确实正确地将输出定向到终端 2,但问题是终端 2 上的第一行总是显示:
warning: GDB: Failed to set controlling terminal: Operation not permitted
我尝试以 root 身份运行 GDB sudo
,但遇到了相同的警告。这是我的流程的简化表示:
# Terminal 2:
$ tty
/dev/pts/14
# Terminal 1:
$ gdb ./some-program
(gdb) tty /dev/pts/14
(gdb) run
谁能解释一下导致此警告的原因以及我如何解决或抑制它?设置控制终端时 GDB 尝试执行什么操作,为什么会失败?
笔记:同样的事情也发生在经典的 tty 上/dev/tty3