调试来自相同代码库的运行时差异

问题描述 投票:0回答:1

我目前正在使用VEINS库和模拟包进行一些实验。因为这些都有很长的运行时间,我正在尝试使用大学集群服务器(KITE 2.0 / RHEL6.6 / Lustre 2.5.29.ddnpf3) - 但是,我现在遇到了几个不同的运行时错误,在我的本地机器上运行完全正常的相同代码(Fedora 23)。我正在寻找一种轻松调试此问题的方法。我怀疑原因在于不同的gcc版本,或者其他一些我无法远程更改的系统级库(但我不确定)。我确定OMNeT ++版本是一样的; VEINS库由我提供,在本地和远程都是相同的。

我遇到的问题的一个例子是discussed here,我最终修复了like this(据我所知,两个版本都有相同的语义... DimensionSet扩展std::set,而DimensionSet::timeFreqDomain是用static const初始化的(Dimension::time, Dimension::frequency),如修复)。

寻找原因的好方法是什么?是否有一种简单的方法可以在这些机器之间进行“交叉编译”,或者通过某种方式来区分二进制文件以查找原因?我在哪里寻找处理这些问题的常用方法?

c++ c++11 omnet++ veins mixim
1个回答
3
投票

我可能已将错误跟踪到static initialization order fiasco的示例:MiXiM的Dimension::time是静态成员,因此它不应该用于初始化其他静态成员。不幸的是,这正是MiXiM(以及Veins)所做的,导致了这种崩溃。

我推动了commit 7807f47c(Veins 4.4的一部分),它几乎消除了所有静态成员,因此整个框架应该更安全。

© www.soinside.com 2019 - 2024. All rights reserved.