以字节为单位列出优化的二进制函数大小

Listing optimized binary function sizes in bytes

我正在为 MCU 优化我的代码,我想查看我的 C 程序中所有函数的大小概览,包括所有库,例如:

$ objdump some arguments that I do not know | pipe through something | clean the result some how
_main: 300 bytes
alloc: 200 bytes
do_something: 1111 bytes
etc...
$ objdump a.out -t|grep "F .text"|cut -f 2-3
00000000000000b1              __slow_div
00000000000000d8              __array_compact_and_grow
00000000000000dc              __log
00000000000000de              __to_utf
00000000000000e9              __string_compact
00000000000000fe              __gc_release
000000000000001d              __gc_check
000000000000001f              array_compact
00000000000001e8              __string_split
000000000000002a              c_roots_clear
000000000000002f              f
000000000000002f              _start
000000000000002f              wpr
000000000000003d              array_get

不完美,大小以十六进制表示,但很容易编写将转换为小数并任意排序的脚本。

nm -S -t d a.out | grep function_name | awk '{gsub ("0*", "", ); print }'

或者为每个交易品种打印一个排序尺寸列表:

nm -S --size-sort -t d a.out | awk '{gsub ("0*", "", ); print  " " }'

nm 列出目标文件中的符号。我们正在使用 -S 在第二列中打印已定义符号的大小,并使用 -t d 以十进制格式输出。