如何比较nm输出

时间:2016-05-15 04:13:11

标签: c++ linux g++ nm

我有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中看到结果,我可以手动识别差异。如果有一些直接工具,那将是最好的。

请注意,我尝试使用带有选项-C的nm来向我显示没有名称Mangling但它仍然显示了很多名称。

1 个答案:

答案 0 :(得分:1)

使用c ++ filt将符号解析为

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