SIGABRT 运行时何时出现错误以及如何在这种情况下进行调试

When does SIGABRT runtime error arise and how to debug in such cases?

本文关键字:这种情况下 调试 何时出 运行时 错误 SIGABRT      更新时间:2023-10-16

从昨天开始,我一直在尝试提交问题的解决方案,但仍然徒劳无功。对于较大的测试用例,我收到运行时错误。在研究此运行时错误时,我开始知道它是由使用过多内存引起的。我有一个大小<=10^6数组和一个<=10^12整数对的向量。这是否会导致堆栈溢出,尤其是在向量的情况下?PS:我已经多次使用C++ STL,但从未遇到过这些限制下的内存溢出。

很可能您的内存不足(除非您的系统有 >8TB 的虚拟内存)并且抛出std::bad_alloc。未处理的异常将导致调用 terminate() 调用 abort()

如果您真的想调试它,请在 gdb 下运行您的程序,您应该看到类似以下内容:

Program received signal SIGABRT, Aborted.

然后,可以键入 bt 以查看堆栈跟踪。