Nano Hash - криптовалюты, майнинг, программирование

Отладка GDB Eigen с ошибкой условных точек останова

Я пытаюсь выполнить отладку с помощью 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?

29.05.2019

  • Спасибо. Я компилирую с исходным кодом Eigen, а не с библиотекой. 29.05.2019
  • @JesperJuhl Просто для пояснения: Eigen предназначен только для заголовка, т. Е. Не компилируется отдельно. Эрик: Можете ли вы предоставить минимально воспроизводимый пример? 29.05.2019

Ответы:


1

Согласно этому вопросу (иногда) у GDB возникают проблемы с перегруженными операторами. Вы можете попробовать один из этих вариантов:

if (! v.isZero())

if (! v.cwiseEqual(0).all()) 

И вместо if v[0] != 0 вы можете попробовать один из них:

 if (v.data()[0] != 0)

 if (v.coeff(0) != 0)
31.05.2019
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..