假设我有一个包含十几个不同模块的项目,这些模块生成一个结果DLL,我该如何分析它以便我可以识别每个模块/函数所贡献的实际文件大小?我知道在Release版本中可能无法删除大量信息,但是如果我有完整的源代码并且可以进行Debug构建呢?
另外,如果在某处定义了大的静态变量,有没有办法可以轻松找到它们?
奖金问题:Linux ELF文件怎么样?
答案 0 :(得分:5)
每当我参与识别膨胀时,我通常都会在Windows上以dumpbin开头。通常通过编写工具来通过dumpbin检查每个对象模块,然后分析输出。它往往是一个迭代过程,可能需要相当长的时间。
对于使用PDB Sizer的调试版本,可以生成有用的报告。
Adrian在这里有一些有用的指导。 Minimizing Code Bloat for Faster Builds and Smaller Executables以及一个名为SymbolSort的工具可以提供帮助。 CodeSort中包含C#中的源代码,因此如果SymbolSort没有帮助,这可能是一个好的起点。