2014-10-20 4 views
1

я вдруг понял, что при компиляции моей программы (которая использует Эйген), используя режим отладки (-g3 -DDEBUG), я получаю сообщение об ошибке выполнения утвержденияAssertion удалось режим отладки Эйгена

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_MAKE_ALIGNED_OPERATOR_NEW в моем единственном классе, который использует члены Eigen, поскольку я думал, что это может быть проблема выравнивания, но все же это не решает проблему. Кто-нибудь натолкнулся на это раньше? Версия выпуска компилируется и выполняется просто отлично, утверждение появляется только в режиме отладки.

ответ

3

Это не связано с выравниванием, но к несоответствию между компиляцией времени и стоимости выполнения означает, что вы, вероятно, имеет что-то вроде этого в коде:

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

, где во время выполнения количество строк 4 не совпадение времени компиляции строк 3. Отладчик поможет вам найти инкриминирующую строку.

+0

Большое спасибо, попробуем выяснить, что происходит. – vsoftco

+0

Действительно, это была проблема – vsoftco

Смежные вопросы