Bloaty McBloatface 是一个强大的工具,用于提供可执行文件和库文件的大小分析。若你在开发 macOS 应用并对应用的大小感到疑惑时,Bloaty 可以帮助你理解哪些部分占用了最多的空间,进而深入分析每个段(segment)、符号(symbol)乃至编译单元(compile unit)。
Installing Bloaty
通过 Google 的 Github 仓库 获取 Bloaty 的源码,或者通过 Homebrew 简单安装:
brew install bloaty
Basic Usage
安装完毕后,你可以简单使用如下命令来分析二进制文件:
bloaty /path/to/your/app
此命令会按大小列出二进制文件中的各段。
Analyzing the __LINKEDIT Segment
__LINKEDIT
段包含动态链接相关信息,通常是二进制文件中最大的段之一。使用以下命令分析每个段占据的空间:
bloaty -d segments /path/to/your/app
Detailed Output
要查看符号或编译单元的详细信息,可以附加 -d
标志,并指定数据源:
bloaty -d symbols /path/to/your/app
编译单元分析:
bloaty -d compileunits /path/to/your/app
这些命令有助于识别导致文件增大的具体原因。
Using dSYM Files
在 macOS 中,调试符号通常存储在 *.dSYM
包中,Xcode 会自动为项目生成。通过指定 .dSYM
文件,可让 Bloaty 提供更丰富的信息:
bloaty /path/to/your/app -n 10 --debug-file path/to/psm.dSYM/Contents/Resources/DWARF/psm
Generating Flame Graphs
要生成火焰图,需要将 Bloaty 的输出变换为火焰图工具所支持的格式:
bloaty /path/to/your/app --csv | flamegraph.pl > bloaty.svg
这里 flamegraph.pl
是从 Brendan Gregg 的 FlameGraph 工具集 中获得的 Perl 脚本,需预先下载。
Conclusion
Bloaty 对 macOS 应用开发人员而言是非常有用的分析与优化工具。随着应用的体积愈发增长,利用此工具能够有效保持应用最佳性能。 了解更多 Bloaty 的细节,请参阅 官方文档。
References
本文灵感来源于 Asif Mohammed 的博客文章,该文章详细介绍了使用 Bloaty 进行 iOS 二进制分析。更多关于 Bloaty 在 iOS 上使用的信息,请查看他的文章:Bloaty 在 iOS 上的介绍。
文档信息
- 本文作者:Zhuojun Miao
- 本文链接:https://miaozhuojun.github.io/2024/02/23/In-Depth-macOS-Binary-Analysis-with-Bloaty-McBloatface/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)