簡體   English   中英

調試相同代碼庫中的運行時差異

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM