bloaty
v1.1
有没有想过是什么使您的二进制大? Bloaty将向您展示二进制文件的尺寸配置文件,以便您可以了解内部空间的内容。
$ ./bloaty bloaty -d compileunits
FILE SIZE VM SIZE
-------------- --------------
34.8% 10.2Mi 43.4% 2.91Mi [163 Others]
17.2% 5.08Mi 4.3% 295Ki third_party/protobuf/src/google/protobuf/descriptor.cc
7.3% 2.14Mi 2.6% 179Ki third_party/protobuf/src/google/protobuf/descriptor.pb.cc
4.6% 1.36Mi 1.1% 78.4Ki third_party/protobuf/src/google/protobuf/text_format.cc
3.7% 1.10Mi 4.5% 311Ki third_party/capstone/arch/ARM/ARMDisassembler.c
1.3% 399Ki 15.9% 1.07Mi third_party/capstone/arch/M68K/M68KDisassembler.c
3.2% 980Ki 1.1% 75.3Ki third_party/protobuf/src/google/protobuf/generated_message_reflection.cc
3.2% 965Ki 0.6% 40.7Ki third_party/protobuf/src/google/protobuf/descriptor_database.cc
2.8% 854Ki 12.0% 819Ki third_party/capstone/arch/X86/X86Mapping.c
2.8% 846Ki 1.0% 66.4Ki third_party/protobuf/src/google/protobuf/extension_set.cc
2.7% 800Ki 0.6% 41.2Ki third_party/protobuf/src/google/protobuf/generated_message_util.cc
2.3% 709Ki 0.7% 50.7Ki third_party/protobuf/src/google/protobuf/wire_format.cc
2.1% 637Ki 1.7% 117Ki third_party/demumble/third_party/libcxxabi/cxa_demangle.cpp
1.8% 549Ki 1.7% 114Ki src/bloaty.cc
1.7% 503Ki 0.7% 48.1Ki third_party/protobuf/src/google/protobuf/repeated_field.cc
1.6% 469Ki 6.2% 427Ki third_party/capstone/arch/X86/X86DisassemblerDecoder.c
1.4% 434Ki 0.2% 15.9Ki third_party/protobuf/src/google/protobuf/message.cc
1.4% 422Ki 0.3% 23.4Ki third_party/re2/re2/dfa.cc
1.3% 407Ki 0.4% 24.9Ki third_party/re2/re2/regexp.cc
1.3% 407Ki 0.4% 29.9Ki third_party/protobuf/src/google/protobuf/map_field.cc
1.3% 397Ki 0.4% 24.8Ki third_party/re2/re2/re2.cc
100.0% 29.5Mi 100.0% 6.69Mi TOTAL
Bloaty对二进制进行了深入的分析。使用自定义的精灵,矮人和Mach-O解析器,Bloaty旨在将二进制的每个字节归因于产生它的符号或编译器。它甚至会拆卸二进制文件以寻找对匿名数据的参考。
Bloaty支持许多功能:
有关Bloaty所有功能的详细信息,请参见用户文档。
有关Bloaty执行的分析的更多信息,请查看Bloaty的工作原理。
要构建,请使用cmake
。例如:
$ cmake -B build -G Ninja -S .
$ cmake --build build
$ cmake --build build --target install
Bloaty将libprotobuf
, re2
, capstone
和pkg-config
作为Git子模型捆绑,并使用LibProtobuf的protoc
构建,但如果可用,它将更喜欢这些依赖项的系统版本。所有其他依赖项都包含在GIT子模型中。
如果git存储库尚未用--recursive
库来克隆,则可以检查以下子模型:
$ git submodule update --init --recursive
要运行测试,请参见tests/readme.md中的信息。
Github发行和公关欢迎。请在可能的情况下包括测试,请参阅:tests/readme.md。
这不是官方的Google产品。