gpt4 book ai didi

C++ 调试 : Terminated with SIGABRT

转载 作者:行者123 更新时间:2023-11-30 02:27:54 25 4
gpt4 key购买 nike

我正在尝试用 C++ 编写一个程序,该程序在机器集群上运行,并且所有机器都通过 TCP 套接字相互通信。程序在其中一台机器上随机崩溃。我用 gdb 对核心转储进行了分析。以下是输出:

$ gdb executable dump

Core was generated by `/home/user/experiments/files/executable 2 /home/user/'.
Program terminated with signal SIGABRT, Aborted.
0 0x00007fb76a084c37 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
56 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.

(gdb) backtrace
0 0x00007fb76a084c37 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
1 0x00007fb76a088028 in __GI_abort () at abort.c:89
2 0x00007fb76a0c12a4 in __libc_message (do_abort=do_abort@entry=2, fmt=fmt@entry=0x7fb76a1cd113 "*** %s ***: %s terminated\n") at ../sysdeps/posix/libc_fatal.c:175
3 0x00007fb76a158bbc in __GI___fortify_fail (msg=<optimized out>, msg@entry=0x7fb76a1cd0aa "buffer overflow detected") at fortify_fail.c:38
4 0x00007fb76a157a90 in __GI___chk_fail () at chk_fail.c:28
5 0x00007fb76a158b07 in __fdelt_chk (d=<optimized out>) at fdelt_chk.c:25
6 0x000000000040a918 in LocalSenderPort::run() ()
7 0x000000000040ae70 in LocalSenderPort::LocalSenderPort(unsigned int, std::string, std::vector<std::string, std::allocator<std::string> >, char*) ()
8 0x00000000004033d5 in main ()

对我应该看什么有什么建议吗?我该如何进行?非常感谢任何帮助。

我现在不共享代码,因为它是一个散布在文件中的大型代码。但如果需要,我可以分享。

最佳答案

此错误:__fdelt_chk (d=<optimized out>) at fdelt_chk.c:25意味着您的程序违反了 FD_* 之一的先决条件宏。

来源fdelt_chk非常简单,只有两种情况会失败:传入负文件描述符,或者传入大于 1023 的文件描述符。

在这个时代,使用 select和/或 FD_SET在任何可以有超过 1024 个同时连接(Linux 很容易允许)的程序中,只能以泪水告终。使用 epoll相反。

关于C++ 调试 : Terminated with SIGABRT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41212302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com