如何解释显示在控制台上的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:opencvbuildi
ncludeopencv2coremat.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
data不为零。可能是空指针测试。
(unsigned)i0 < (unsigned)size.p[0]
i0,不管它是什么,都小于size。P[0],不管它是什么
(unsigned)(i1*DataType<_Tp>::channels) < (unsigned)(size.p[1]*channels())
Number off channels小于其他的channel Number。
((((sizeof(size_t)<<28)|0x8442211) >> ((DataType<_Tp>::depth) & ((1 << 3) - 1))*4) & 15) == elemSize1()
在我看来,某些东西的位深度必须是正确的。没有上下文,我无法确定。
其余in cv::Mat::at, file e:opencvbuildincludeopencv2coremat.hpp, line 538
只是行号和发生断言的文件。
相关文章:
- C++:将控制台输出存储在宏中更好吗
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- SSH通过/sbin/SSH无法读取RSA密钥文件(从控制台运行)
- C++控制台应用程序阻止退出
- 如何修复此iFile以将.txt输出到控制台
- 为什么控制台要求输入,即使代码中没有输入
- 在Qt Creator中,如何在连接到正在运行的进程后查看控制台输出
- 控制台输出在 Qt5 中未正确显示
- C++出现控制台错误.我无法识别源代码的问题
- C++程序不会从 Windows 控制台运行
- 有人可以向我解释为什么控制台输出 0 吗?
- Visual Studio 2017 停止工作,并在打开后显示许多控制台窗口
- 如何从 Win32 C++ 应用程序输出到父控制台窗口?
- Win32 API 控制台光标在 WriteConsole 后不移动
- 如何获取控制台窗口的宽度?
- 如何在 Win32 C++控制台应用程序中调用 UWP 类库
- 如何从Windows控制台调用.exe(C++)以在不同的目录(或任何目录)中创建文件夹?
- 来自Visual Studio中控制台项目的exe文件?
- 为什么即使使用 for 循环遍历我的向量,它也没有输出到控制台?(C++)
- 使用 std::string_view 的子字符串控制台输出