Ubuntu CodeBlocks :warning: GDB:无法设置控制终端:操作不允许。

7

Ubuntu 版本:12.04
Code::Blocks 10.04

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

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


这个回答解决了你的问题吗?Code::Blocks - 警告:GDB:无法设置控制终端:操作不允许 - AudioDroid
1个回答

0

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

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

以下内容基于我的有限理解,有可能完全错误,请纠正我。

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

我想强调的是,我可能完全错了,如果是这样,我真的希望有人纠正我,这样我就能学到东西。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接