使用 Bloaty 深入分析你的 macOS 应用大小

2024/02/23 tool 共 1102 字,约 4 分钟

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 上的介绍

文档信息

Search

    Table of Contents