![](/img/trans.png)
[英]Differences in binaries produced by gcc for the same code base for different paths
[英]Debugging runtime differences from the same code base
我目前正在使用VEINS庫和模擬包進行一些實驗。 由於這些服務器的運行時間很長,因此我嘗試使用大學集群服務器(KITE 2.0 / RHEL6.6 / Lustre 2.5.29.ddnpf3)-但是,我現在遇到了幾個不同的運行時錯誤,在我的本地計算機上運行完全相同的代碼(Fedora 23)。 我正在尋找一種輕松調試此問題的方法。 我懷疑原因是在不同的gcc
版本中,或者在其他無法遠程更改的系統級庫中(但我不確定)。 我確定OMNeT ++版本是相同的; VEINS庫由我提供,在本地和遠程都相同。
這里討論了一個我遇到的問題的示例,我最終像這樣修復了它 (據我所知,兩個版本具有相同的語義... DimensionSet
擴展了std::set
,而DimensionSet::timeFreqDomain
是一個static const
使用(Dimension::time, Dimension::frequency)
初始化,如修復程序中所述。
尋找原因的好方法是什么? 是否有一種簡單的方法可以在這些計算機之間“交叉編譯”,或通過某種方式比較二進制文件以查找原因? 我在哪里尋找解決此類問題的常用方法?
我可能已將錯誤歸結為靜態初始化順序失敗的一個示例:MiXiM的Dimension::time
是靜態成員,因此不應將其用於初始化其他靜態成員。 不幸的是,這正是MiXiM(以及擴展為Veins)所做的,從而導致了此類崩潰。
我已經提交了commit 7807f47c (屬於Veins 4.4的一部分),它刪除了幾乎所有的靜態成員,因此整個框架應該更安全地使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.