Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++代码挂起,即使在GDB中_C++_Gdb_Valgrind - Fatal编程技术网

C++代码挂起,即使在GDB中

C++代码挂起,即使在GDB中,c++,gdb,valgrind,C++,Gdb,Valgrind,在linux中,大约5k行的C++代码随机挂起。我的代码处理通过原始套接字发送和接收数据包。代码只是在某个点随机停止,没有任何响应-甚至[ctrl+c]都不方便::每次挂起后,我都用来终止进程。 我尝试了GDB,结果和它挂起时一样-ctrl+c产生了一条SIGTERM错误消息。 在使用valgrind时,代码同样挂起 如何调试此问题?是否有任何系统错误?使用strace命令,很明显挂起是由于futex_wait_私人问题造成的。套接字读取被推入死锁场景。增加select timeout(选择超时

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


如何调试此问题?是否有任何系统错误?

使用strace命令,很明显挂起是由于futex_wait_私人问题造成的。套接字读取被推入死锁场景。增加select timeout(选择超时)值时-问题可以解决。

发送信号后,GDB中的回溯bt是什么?阻止数据包读取perhaps@OliCharlesworth:正如我所说,代码挂起::ctrl+c没有帮助,所以我终止了gdb中正在运行的程序。bt显示没有堆栈。@深思熟虑:阻止读取pakets意味着什么?这是以太网问题吗?我在代码中使用pcap。接收数据包的代码部分。。。可能是读套接字正在阻止不返回,直到操作找到调用为止。套接字可能没有响应,因为它没有读取任何内容。因此,您的代码也会无限期地等待。Ctrl-C没有帮助,因为调用线程可能处于UnitEmputable_睡眠状态。张贴代码中从套接字读写的部分可能是人们可以给出更好建议的部分