Отладка различий во время выполнения из одной и той же базы кода

Я в настоящее время использую ВЕНЫ библиотека и пакет для моделирования, чтобы сделать некоторые эксперименты. Поскольку у них очень долгое время выполнения, я пытаюсь использовать серверные кластерные университеты (KITE 2.0 / RHEL6.6 / Luster 2.5.29.ddnpf3) — однако теперь я столкнулся с несколькими ошибками времени выполнения, с тот же код, который отлично работает на моей локальной машине (Fedora 23). Я ищу способ легко отладить эту проблему. Я подозреваю, что причина лежит где-то в другом gcc версия или, возможно, какая-то другая библиотека системного уровня, которую я не могу изменить удаленно (но я не уверен). Я уверен, что версия OMNeT ++ такая же; библиотека VEINS предоставлена ​​мной и одинакова как локально, так и удаленно.

Примером проблем, с которыми я столкнулся, является обсуждается здесь, который я в итоге исправил как это (насколько я могу судить, обе версии имеют одинаковую семантику … DimensionSet продолжается std::set, а также DimensionSet::timeFreqDomain это static const инициализируется с (Dimension::time, Dimension::frequency) как в починке).

Какой хороший подход к поиску причины? Есть ли простой способ «кросс-компиляции» между этими машинами или какой-то способ разграничить двоичные файлы, чтобы найти причину? Где я могу найти общие способы решения подобных проблем?

0

Решение

Я мог бы отследить ошибку до примера статический порядок инициализации фиаско: MiXiM’s Dimension::time является статическим членом, поэтому его не следует использовать для инициализации других статических членов. К сожалению, это именно то, что сделал MiXiM (и, соответственно, Veins), что привело к таким сбоям.

Я толкнул совершить 7807f47c (часть Veins 4.4), которая избавляет почти от всех статических элементов, так что весь фреймворк должен быть безопаснее в использовании.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]