比方说,我有一个项目,其中有十几个不同的模块,它们产生一个结果DLL,如何分析它,以便确定每个模块/功能所贡献的实际文件大小?我知道使用释放大量信息的Release版本可能是不可能的,但是如果我拥有完整的源代码并且可以进行Debug版本,那该怎么办?
另外,如果某个地方定义了较大的静态变量,有没有办法我可以轻松地找到它们?
额外的问题:Linux ELF文件如何?
最佳答案
每当我参与识别膨胀时,通常在Windows上就从dumpbin开始。通常,通过编写工具来通过dumpbin检查每个对象模块,然后分析输出。它往往是一个反复的过程,可能会花费大量时间。
对于使用PDB的调试版本,Sizer可以生成有用的报告。
阿德里安(Adrian)在这里有一些有用的指导。 Minimizing Code Bloat for Faster Builds and Smaller Executables和一个名为SymbolSort的工具来提供帮助。 C#中的源代码包含在SymbolSort中,因此如果SymbolSort没有帮助,则可能是一个不错的起点。
对于ELF,nm和objdump的输出是一个很好的起点。