Я в настоящее время использую ВЕНЫ библиотека и пакет для моделирования, чтобы сделать некоторые эксперименты. Поскольку у них очень долгое время выполнения, я пытаюсь использовать серверные кластерные университеты (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)
как в починке).
Какой хороший подход к поиску причины? Есть ли простой способ «кросс-компиляции» между этими машинами или какой-то способ разграничить двоичные файлы, чтобы найти причину? Где я могу найти общие способы решения подобных проблем?
Я мог бы отследить ошибку до примера статический порядок инициализации фиаско: MiXiM’s Dimension::time
является статическим членом, поэтому его не следует использовать для инициализации других статических членов. К сожалению, это именно то, что сделал MiXiM (и, соответственно, Veins), что привело к таким сбоям.
Я толкнул совершить 7807f47c (часть Veins 4.4), которая избавляет почти от всех статических элементов, так что весь фреймворк должен быть безопаснее в использовании.
Других решений пока нет …