c++ - 中止核心转储 C++

标签 c++ cygwin

我有一个大型 C++ 函数,它使用 OpenCV 库并在带有 cygwin g++ 编译器的 Windows 上运行。最后它给出了 Aborted(core dumped) 但函数在此之前完全运行。我还尝试将 print 语句放在函数的末尾。这也被打印出来。所以我认为代码中没有逻辑错误会产生错误。

请解释。

我也在使用 assert 语句。但是中止的错误不是由于 assert 语句。它并没有说断言失败。它只是在没有任何消息的情况下结束。

此外,该文件是一个大型项目的一部分,因此我也无法发布代码。

gdb 结果:

Program received signal SIGABRT, Aborted.
0x7c90e514 in ntdll!LdrAccessResource () from /c/WINDOWS/system32/ntdll.dll

最佳答案

看起来像是内存错误(写入已释放的内存、双重释放、堆栈溢出...)。当代码可以在 Linux 下编译和运行时,您可以使用 valgrind 查看是否存在内存问题。您也可以尝试禁用应用程序的某些部分,直到问题消失,以了解错误发生的位置。但是这种方法也可能会产生误报,因为与内存相关的错误可能会导致模块失败,而这并不是错误的原因。您也可以在 gdb 中运行该程序。但是这里调试器指向的位置也可能不是错误发生的位置。

关于c++ - 中止核心转储 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2729202/

相关文章:

c++ - sqrt(x) 和 pow(x,0.5) 的区别

c++ - 将 System C 安装到 Cygwin

windows - 如何执行这个shell脚本

windows - 从 Cygwin 控制台启动 Node.js 的问题

windows - Cygwin 的 bash 不能运行 'net use/user' 命令?

c++ - 获取释放内存顺序与顺序一致性不同的实际例子是什么?

c++ - 防止在不同类型的 std::function 中包装 lambda

c++ - AWS 开发工具包 C++ 签名 V2

c++ - 让 Visual Studio 2008 使用 8.0 CRT 库?

gcc - 如何编译一个简单的操作系统并使其可启动?