Eclipse CDT:线程在调试模式下获取 SIGPIPE

Posted

技术标签:

【中文标题】Eclipse CDT:线程在调试模式下获取 SIGPIPE【英文标题】:Eclipse CDT: Thread is getting SIGPIPE in debugging mode 【发布时间】:2014-05-28 12:42:58 【问题描述】:

有一个用 C 语言编写的工具,基于套接字编程和多线程。 如果我只是简单地运行该工具,则不会出现错误,并且该工具可以完美地工作。

但如果我在调试模式下运行该工具,线程之间的切换会引发 SIGPIPE 信号,因此数据无法从该工具传输到其服务器。

使用 SIGNAL(SIGPIPE, SIG_IGN) 处理 SIGPIPE 会使线程工作吗?

据我了解,这是由于线程之间的进程间通信失败而引起的。如果是,那么如何调试这样的多线程应用程序?

请建议我处理此问题的方法。

【问题讨论】:

【参考方案1】:

通过仔细进入线程解决了这个问题。 该工具不仅会创建进程,还会创建线程,因此不正确的 gdbinit 设置和步进会引发 SIGPIPE 信号。

其他相关帖子here对此进行了说明。

【讨论】:

以上是关于Eclipse CDT:线程在调试模式下获取 SIGPIPE的主要内容,如果未能解决你的问题,请参考以下文章

windows下使用mingw/gdb无法调试eclipse helios cdt上的小程序,控制台死机

使用 Eclipse Mars CDT 进行 JTag 调试:“程序文件不存在”

使用 Eclipse CDT/RSE/RDT 远程调试 C++ 应用程序

是否可以在 eclipse CDT 中将调试会话附加到正在运行的程序

如何将 GDB 调试器安装到 Eclipse CDT

Eclipse C/C++ CDT 烦人的问题