ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

C++ exe程序内存占用分析

C++ exe程序内存占用分析
编译
$ git clone https://github.com/google/bloaty $ cd bloaty $ cmake -B build -G Ninja -S . $ cmake --build build $ cmake --build build --target install
命令
bloaty.exe --list-sources rmembers the .o files in a .a file compileunits source file for the .o file (translation unit). requires debug info. inputfiles the filename specified on the Bloaty command-line inlines source line/file where inlined code came from. requires debug info. sections object file section segments load commands in the binary symbols symbols from symbol table (configure demangling with --demangle) rawsymbols unmangled symbols fullsymbols full demangled symbols shortsymbols short demangled symbols
bloaty.exe --help USAGE: bloaty [OPTION]... FILE... [-- BASE_FILE...] Options: --csv Output in CSV format instead of human-readable. --tsv Output in TSV format instead of human-readable. -c FILE Load configuration from <file>. -d SOURCE,SOURCE Comma-separated list of sources to scan. --debug-file=FILE Use this file for debug symbols and/or symbol table. -C MODE How to demangle symbols. Possible values are: --demangle=MODE --demangle=none no demangling, print raw symbols --demangle=short demangle, but omit arg/return types --demangle=full print full demangled type The default is --demangle=short. --disassemble=FUNCTION Disassemble this function (EXPERIMENTAL) --domain=DOMAIN Which domains to show. Possible values are: --domain=vm --domain=file --domain=both (the default) -n NUM How many rows to show per level before collapsing other keys into '[Other]'. Set to '0' for unlimited. Defaults to 20. -s SORTBY Whether to sort by VM or File size. Possible values are: -s vm -s file -s both (the default: sorts by max(vm, file)). -w Wide output; don't truncate long labels. --help Display this message and exit. --list-sources Show a list of available sources and exit. --source-filter=PATTERN Only show keys with names matching this pattern. Options for debugging Bloaty: --debug-vmaddr=ADDR --debug-fileoff=OFF Print extended debugging information for the given VM address and/or file offset. -v Verbose output. Dumps warnings encountered during processing and full VM/file maps at the end. Add more v's (-vv, -vvv) for even more.
测试
#include <iostream> const char* data = "而此时是ii四十九而此时是ii四十九而此时是ii四十九而此时是ii四十九而此时是ii四十九而此时是ii四十九而此时是ii四十九而此时是ii四十九而此时是ii四十九而此时是ii四十九"; int main() { printf("test main\n"); }
g++ -g main.cpp -o my_program.exe bloaty my_program.exe

配置
bloaty -c bloaty_package.bloaty my_program.exe

bloaty_package.bloaty

custom_data_source: { name: "bloaty_package" base_data_source: "compileunits" rewrite: { pattern: "^(\\.\\./)?src" replacement: "src" } rewrite: { pattern: "^(\\.\\./)?(third_party/\\w+)" replacement: "\\2" } }
参考

GitHub - google/bloaty: Bloaty: a size profiler for binaries

C/C++ Native 包大小测量_bloaty-CSDN博客


创作不易,小小的支持一下吧!

返回列表