2011-06-15 4 views
5

У меня возникли проблемы с большим файлом статической библиотеки (.lib), и я подозреваю, что код раздувается от неизбирательного использования классов шаблонов. Я хочу проанализировать символы в библиотеке, чтобы подтвердить, что составляет основную часть размера файла.Утилита для анализа символов в файле библиотеки

Когда я связываю свой исполняемый файл с этой библиотекой, результирующий вывод гораздо более разумный, размерный (около 20 Мб), поэтому компоновщик, очевидно, выделяет множество избыточных символов. Я хочу узнать, что его удаление ..

Я знаю, что я могу использовать dumpbin для генерации символов и заголовков, но с большой библиотекой (900Mb) этот дамп в значительной степени неприменим без утилиты для анализа и отчетности по нему.

Очевидно, я мог бы написать это сам, но задавался вопросом, может ли кто-нибудь порекомендовать бесплатное ПО, уже имеющееся для этого?

ответ

1

Я нашел один (SymbolSort), который работает очень хорошо, дает мне именно то, что мне нужно:

1

Это ваша собственная библиотека? Если это так, вы можете generate a link map, который описывает макет кода в библиотеке, который предоставит вам информацию, необходимую здесь, в более удобной форме.

Если у вас нет доступа к исходному коду для этого, вы можете использовать Perl или другие инструменты для скриптинга с открытым исходным кодом для взлома вывода dumpbin.

EDIT: вы также можете дать LibDump вращение, его можно загрузить с here. Я сам этого не использовал.

+0

Волю, что показать мне все символы, которые отщепляемые компоновщик? – StevieG

+0

Не уверен, что вы это понимаете. Он покажет вам, где каждая функция запускается и насколько она велика, - не то, что вы хотите? –

+0

Как я понимаю, в файле .lib есть еще много символов, которые фактически будут использоваться исполняемым файлом, поскольку компоновщик удаляет все неиспользуемые символы (если я не ошибаюсь?). Мне нужно увидеть все символы в файле .lib, а не только те, которые используются исполняемым файлом - мне просто интересно, может ли построить карту ссылок во время ссылки, или только карту того, что используется полученным .exe – StevieG