C++代码挂起,即使在 GDB 中也是如此

C++ code hangs, even in GDB

本文关键字:GDB 挂起 代码 C++      更新时间:2023-10-16

C++ 大约 5k 行的代码随机挂起 - 在 Linux 中。我的代码处理通过RAW套接字发送和接收数据包。 代码只是随机停止在一点上没有任何响应 - 甚至 [ctrl+c] 都证明很方便::每次挂起后我都会杀死进程。我尝试了GDB,结果是一样的,它挂起了 - ctrl + c产生了SIGTERM错误消息。在使用 valgrind 时,代码同样挂起。

如何调试此问题?是任何类型的系统错误吗?

使用 strace 命令 ,很明显挂起是由于futex_wait_private问题。套接字读取被推入死锁场景。在增加选择超时值时 - 问题可以解决。