이진이 무엇을 크게 만들고 있는지 궁금한 적이 있습니까? 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는 이진에 대한 깊은 분석을 수행합니다. Custom Elf, Dwarf 및 Mach-O 파서를 사용하여 Bloaty는 이진의 모든 바이트를 기호 또는 CompileUnit에 생성 한 CompileUnit에 정확하게 기인하는 것을 목표로합니다. 익명 데이터에 대한 참조를 찾는 이진을 분해 할 수도 있습니다.
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 문제와 PR은 환영합니다. 가능한 경우 테스트를 포함 시키십시오. 테스트/readme.md를 참조하십시오.
이것은 공식적인 Google 제품이 아닙니다.