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