ubuntu 代码块:警告:GDB?设置控制终端失败:不允许操作

Jer*_*ang 6 debugging ubuntu codeblocks

ubuntu 版本:12.04
代码:块 10.04

当我调试我的程序时,IDE 输出

“警告:GDB?无法设置控制终端:不允许操作”

小智 0

我没有解决方案,但我可以指出错误是如何生成的。

查看 gdb 源代码,警告输出是 ioctl 调用的结果生成的,特别是设置控制终端 (TIOSCCTY)。Man ioctl_tty 告诉我们,如果终端是不同会话组的控制终端,则此调用将失败,除非设置了 CAP_SYS_ADMIN 并且参数为 1。在这种情况下,参数为 0,因此设置 CAP_SYS_ADMIN 或设置 CAP_SYS_ADMIN 并不重要。不是。

以下内容基于我对控制终端的有限理解,因此可能完全错误。如果是这样,请纠正我。

IDE 正在生成一个终端进程,它将自动创建一个会话组。接下来,在生成的终端中启动 gdb 进程(这通常通过将-x 命令(或类似命令)传递给终端创建来实现)。在启动期间,gdb 操作标准文件描述符(cin、cout 和 cerr),然后尝试将生成的终端设置为控制终端。由于终端已有会话组,因此此操作失败。详细内容请参考gdb源代码的文件inflow.c函数。new_tty

我想强调的是,我在这方面可能是绝对错误的,如果是这样的话,我真的希望有人纠正我,以便我可以学习。