分析Windows PE格式的.exe/.dll文件中的代码膨胀问题

7
假设我有一个包含十几个不同模块的项目,它们生成一个结果DLL文件,那么我该如何分析它以便确定每个模块/函数实际贡献的文件大小?如果我拥有完整的源代码并可以进行调试构建,那么这可能是不可能的Release版本中已经削减了很多信息,但是Debug版本呢?
此外,如果某处定义了大量静态变量,是否有办法轻松地定位它们? 奖励问题:Linux ELF文件怎么样?

dumpbin 应该 IMHO 显示您的大型全局/静态内容。 - valdo
@valdo,如何操作?我已经尝试了一下,但好像无法弄清楚。 - kizzx2
1个回答

5
每当我需要识别程序膨胀时,通常会从Windows上的dumpbin开始。通常通过编写一个工具,使用dumpbin检查每个对象模块,然后分析输出来进行迭代处理,这可能需要相当长的时间。
对于带有PDB的调试版本,Sizer可以生成有用的报告。
Adrian在这里提供了一些有用的指导减少代码膨胀以实现更快的构建和更小的可执行文件以及一个名为SymbolSort的工具来帮助您。SymbolSort附带了C#源代码,如果SymbolSort无法帮助,则可以从那里开始。

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


这太棒了!他们有这个愚蠢的24小时赏金政策 :P - kizzx2
刚刚看了一下 nm -S。这个问题在Windows上解决起来真是太难了:P - kizzx2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接