Проанализируйте файлы .exe / .dll (Windows PE) на предмет раздувания кода. - PullRequest
7 голосов
/ 05 октября 2010

Допустим, у меня есть проект с дюжиной различных модулей, которые производят одну результирующую DLL, как я могу проанализировать ее, чтобы я мог определить фактический размер файла, который вносит каждый модуль / функции?Я знаю, что это может быть невозможно со сборкой Release, где много информации было удалено, но как насчет того, чтобы у меня был полный исходный код и я мог выполнить сборку Debug?

Кроме того, если где-то определены большие статические переменные,Есть ли способ, которым я могу легко найти их?

Бонусный вопрос : Как насчет файлов Linux ELF?

1 Ответ

5 голосов
/ 10 октября 2010

Всякий раз, когда я принимал участие в определении раздувания, я обычно начинаю с dumpbin в Windows.Обычно, написав инструмент для проверки каждого объектного модуля через dumpbin , затем анализируйте вывод.Это, как правило, итеративный процесс, который может занять достаточно много времени.

Для отладочных сборок с использованием PDB Sizer может выдавать полезные отчеты.

Адриан имеет несколько полезных советовВот. Минимизация разрастания кода для более быстрых сборок и меньших исполняемых файлов и инструмента под названием SymbolSort , чтобы помочь.Источник в C # включен в SymbolSort, так что он может быть хорошим началом, если SymbolSort не помогает.

Для ELF вывод nm и objdump хорошая отправная точка.

...