0

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

这里讨论了我遇到的问题的一个示例,我最终像这样修复了它(据我所知,两个版本具有相同的语义...... DimensionSetextends std::set,并且在修复中初始化为DimensionSet::timeFreqDomainstatic const(Dimension::time, Dimension::frequency)

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

4

1 回答 1

3

我可能已经将错误归结为静态初始化命令失败的示例:MiXiMDimension::time是静态成员,因此它不应该用于初始化其他静态成员。不幸的是,这正是 MiXiM(以及,通过扩展,Veins)所做的,导致了此类崩溃。

我已经推送了提交 7807f47c(Veins 4.4 的一部分),它消除了几乎所有的静态成员,因此整个框架应该更安全地使用。

于 2016-03-17T08:51:00.983 回答