如何解释控制台上显示的 C++ 错误消息?
How to interpret c++ error messages displayed on the console?
我是 C++ 的新手,我不太了解如何阅读和解释控制台上显示的 C++ 错误消息。以下是我在 OpenCV 中处理一些图像时出现的错误消息。我知道这应该是与 Mat 文件的索引和 Mat 矩阵数据结构的维度有关的错误。但是我想学习如何一点一点地阅读错误信息。
OpenCV Error: Assertion failed (dims <= 2 && data && (unsigned)i0 < (un
signed)size.p[0] && (unsigned)(i1*DataType<_Tp>::channels) < (unsigned)(size.p[1
]*channels()) && ((((sizeof(size_t)<<28)|0x8442211) >> ((DataType<_Tp>::depth) &
((1 << 3) - 1))*4) & 15) == elemSize1()) in cv::Mat::at, file e:\opencv\build\i
nclude\opencv2\core\mat.hpp, line 538
通常它是对输入的测试或函数调用传递的错误、异常和致命的东西。如果测试通过,程序就可以运行。如果测试失败,它会以一种残酷且非常明显的方式终止,以确保错误得到修复。
标准修复是:
使用调试器确定断言哪个函数。
阅读断言函数的文档,确保您传递的数据正确,并在调用断言函数之前正确调用以配置系统。
继续崩溃。
(dims <= 2 && data && (unsigned)i0 < (unsigned)size.p[0] && (unsigned)(i1*DataType<_Tp>::channels) < (unsigned)(size.p[1]*channels()) && ((((sizeof(size_t)<<28)|0x8442211) >> ((DataType<_Tp>::depth) & ((1 << 3) - 1))*4) & 15) == elemSize1())
这是失败的布尔逻辑。它是特定于实现的。具体来说,这是一组 5 个测试,必须全部通过,否则程序将终止。
dims <= 2
Dims 小于或等于 2
data
数据不为零。可能是空指针测试。
(unsigned)i0 < (unsigned)size.p[0]
i0,不管是什么,都小于size.p[0],不管是什么。
(unsigned)(i1*DataType<_Tp>::channels) < (unsigned)(size.p[1]*channels())
关闭频道的数量少于其他频道的数量。
((((sizeof(size_t)<<28)|0x8442211) >> ((DataType<_Tp>::depth) & ((1 << 3) - 1))*4) & 15) == elemSize1()
在我看来,某些东西的位深度一定是正确的。没有上下文我不能确定。
其余
in cv::Mat::at, file e:\opencv\build\include\opencv2\core\mat.hpp, line 538
只是行号和发生断言的文件。
我是 C++ 的新手,我不太了解如何阅读和解释控制台上显示的 C++ 错误消息。以下是我在 OpenCV 中处理一些图像时出现的错误消息。我知道这应该是与 Mat 文件的索引和 Mat 矩阵数据结构的维度有关的错误。但是我想学习如何一点一点地阅读错误信息。
OpenCV Error: Assertion failed (dims <= 2 && data && (unsigned)i0 < (un
signed)size.p[0] && (unsigned)(i1*DataType<_Tp>::channels) < (unsigned)(size.p[1
]*channels()) && ((((sizeof(size_t)<<28)|0x8442211) >> ((DataType<_Tp>::depth) &
((1 << 3) - 1))*4) & 15) == elemSize1()) in cv::Mat::at, file e:\opencv\build\i
nclude\opencv2\core\mat.hpp, line 538
通常它是对输入的测试或函数调用传递的错误、异常和致命的东西。如果测试通过,程序就可以运行。如果测试失败,它会以一种残酷且非常明显的方式终止,以确保错误得到修复。
标准修复是:
使用调试器确定断言哪个函数。
阅读断言函数的文档,确保您传递的数据正确,并在调用断言函数之前正确调用以配置系统。
继续崩溃。
(dims <= 2 && data && (unsigned)i0 < (unsigned)size.p[0] && (unsigned)(i1*DataType<_Tp>::channels) < (unsigned)(size.p[1]*channels()) && ((((sizeof(size_t)<<28)|0x8442211) >> ((DataType<_Tp>::depth) & ((1 << 3) - 1))*4) & 15) == elemSize1())
这是失败的布尔逻辑。它是特定于实现的。具体来说,这是一组 5 个测试,必须全部通过,否则程序将终止。
dims <= 2
Dims 小于或等于 2
data
数据不为零。可能是空指针测试。
(unsigned)i0 < (unsigned)size.p[0]
i0,不管是什么,都小于size.p[0],不管是什么。
(unsigned)(i1*DataType<_Tp>::channels) < (unsigned)(size.p[1]*channels())
关闭频道的数量少于其他频道的数量。
((((sizeof(size_t)<<28)|0x8442211) >> ((DataType<_Tp>::depth) & ((1 << 3) - 1))*4) & 15) == elemSize1()
在我看来,某些东西的位深度一定是正确的。没有上下文我不能确定。
其余
in cv::Mat::at, file e:\opencv\build\include\opencv2\core\mat.hpp, line 538
只是行号和发生断言的文件。