Я пытаюсь выполнить отладку с помощью GDB, используя условные точки останова на объекте Eigen. Например, я хотел бы сломаться, когда какие-либо значения в моем векторе не равны нулю. Я бы сделал это в GDB:
break cpp/File.cpp:143 if (v != 0).any()
Однако это не работает. GDB дает это:
Could not find operator!=
хотя это вполне допустимый синтаксис. Кроме того, условная точка останова, например
break cpp/File.cpp:143 if v[0] != 0
дает эту ошибку в GDB:
Error in testing breakpoint condition:
Couldn't get registers: No such process.
An error occurred while in a function called from GDB.
Evaluation of the expression containing the function
(Eigen::DenseCoeffsBase<Eigen::Array<int, 3, 1, 0, 3, 1>, 1>::operator[](long)) will be abandoned.
When the function is done executing, GDB will silently stop.
Код был скомпилирован с помощью -O0 -g -fno-inline
. Как отлаживать содержимое объекта Eigen?