断言未通过特征调试模式

Assertion failed Eigen debug mode

本文关键字:调试 模式 特征 断言      更新时间:2023-10-16

我突然意识到,当使用调试模式(-g3 -DDEBUG(编译我的程序(使用特征(时,我收到运行时断言错误

Assertion failed: (v == T(Value)), function variable_if_dynamic, file /Users/vlad/eigen_3.2.2/Eigen/src/Core/util/XprHelper.h, line 53

我不知道这到底是在哪里发生的,为什么。我还在我唯一使用 Eigen 成员的类中使用了EIGEN_MAKE_ALIGNED_OPERATOR_NEW,因为我认为这可能是一个对齐问题,但它仍然不能解决问题。以前有人碰到过这个吗?发布版本编译和运行良好,断言仅在调试模式下显示。

这与对齐无关,而是与编译时和运行时值之间的不匹配有关,这意味着您的代码中可能有类似的东西:

Matrix<double,3,Dynamic> mat(4,5);

其中运行时4行数与编译时3行数不匹配。调试器将帮助您找到有罪的行。