分析.exe / .dll(Windows PE)文件以获取代码膨胀

时间:2010-10-05 13:32:03

标签: windows performance low-level diagnostics dumpbin

假设我有一个包含十几个不同模块的项目,这些模块生成一个结果DLL,我该如何分析它以便我可以识别每个模块/函数所贡献的实际文件大小?我知道在Release版本中可能无法删除大量信息,但是如果我有完整的源代码并且可以进行Debug构建呢?

另外,如果在某处定义了大的静态变量,有没有办法可以轻松找到它们?

奖金问题:Linux ELF文件怎么样?

1 个答案:

答案 0 :(得分:5)

每当我参与识别膨胀时,我通常都会在Windows上以dumpbin开头。通常通过编写工具来通过dumpbin检查每个对象模块,然后分析输出。它往往是一个迭代过程,可能需要相当长的时间。

对于使用PDB Sizer的调试版本,可以生成有用的报告。

Adrian在这里有一些有用的指导。 Minimizing Code Bloat for Faster Builds and Smaller Executables以及一个名为SymbolSort的工具可以提供帮助。 CodeSort中包含C#中的源代码,因此如果SymbolSort没有帮助,这可能是一个好的起点。

对于ELF,nmobjdump的输出是一个很好的起点。