2016-05-15 2 views
1

У меня есть 2 объектных файла, которые должны быть похожими на два разных периода компиляции с той же базы кода. Я хотел сравнить их выходы nm. Однако я не могу, потому что есть много названий. Из-за результатов изменения названия кажутся разными, но на самом деле их нет. Я попробовал следующие шаги, чтобы помочь мне сравнитьКак сравнить выходы 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

использование с ФИЛТР ++ де-MANGLE символы как

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

попробовал это .. она до сих пор искореженных символы – MAG

+0

какой платформе? может иметь доступ к двоичному образцу? –

+0

Извините, я не могу использовать двоичный файл. Я использую linux с g ++. спецификации ОС являются: Дистрибьютор ID: RedHatEnterpriseClient Описание: Red Hat Enterprise Linux Client релиз 5.10 Release: 5,10 – MAG

Смежные вопросы