2016-05-15 50 views
1

我有2個對象文件應該是相似的,因爲它們來自相同代碼庫的2個不同的編譯時間。我想比較他們的nm輸出。不過,我不知道有很多名字混在一起。由於名稱改變的結果似乎不同,但實際上並非如此。我嘗試了以下步驟來幫助我比較如何比較納米輸出

1) took last word using command 
sed '/ /s/.* //' nmfile1 >nmfile1_lastword 

2) removed _Z.. starting word with nothing 
sed 's/^_Z...//' nmfile1_lastword > nmfile1_lastword_removed_z 

3) sorted the same 
sort nmfile1_lastword_removed_z > nmfile1_lastword_removed_z_sorted 

我也爲第二個nmFile2做了上述操作。

但是仍然有很多名字在開始時被弄亂,我無法刪除,這讓我覺得沒有簡單的方法來比較nm輸出。請注意,我只關心起始名稱修改,然後我可以在gvim -d中看到結果,並且我將能夠手動識別差異。如果有一些直接的工具,它會是最好的。

請注意,我嘗試使用nm選項-C來顯示我沒有名稱,但它仍然顯示了很多名稱mangling。

回答

1

使用C++ FILT它來過濾符號

nm xxx.so | c++filt > compare1.txt 
nm xxx.so | c++filt > compare2.txt 
+0

試過這種..它仍然錯位符號 – MAG

+0

什麼平臺?可以訪問示例二進制文件? –

+0

對不起將無法共享二進制..我用g ++的Linux。操作系統規格是:經銷商ID:RedHatEnterpriseClient 描述:紅帽企業Linux客戶端版本5.10 版本:5.10 – MAG