3
我想在一個大的代碼庫中確定靜態存儲持續時間的所有對象在哪裏;以便我可以查看靜態初始化順序是否存在任何潛在問題。查找所有靜態對象的快速方法
有沒有很好的方法來做到這一點?
僅僅搜索關鍵字static
還不夠好,因爲它會丟失在名稱空間範圍內聲明的任何對象。
鏈接器的地圖文件確實表明bss
和data
區域有多大,但是它剝奪了對於不extern
符號的所有名稱。
目前我正在篩選每個查找DATA和BSS的對象文件的轉儲,但這很痛苦,並且存在大量垃圾,例如vtables類和編譯器生成的靜態數據。
可能會檢查['nm']的結果(http://unixhelp.ed.ac.uk/CGI/man-cgi?nm)可能有助於做到這一點。 –
這確實是一個沮喪的練習。我設法取得了一些進展(我認爲),但無法恢復名稱。希望有人會有更好的解決方案。 –
我正在使用一個不同的工具鏈,它具有類似的'nm'轉儲工具;問題在於那裏有太多東西需要清理哪些是靜態對象,以及相應代碼的位置 –