我需要一种方法来分析我的GCC编译器的ARM输出文件。我正在编译裸机,我很关心大小。我可以使用交叉编译器提供的arm-none-eabi-objdump,但如果有一个工具来完成这项任务,解析输出不是我渴望做的事情。你知道这样的工具存在吗?我的搜索没有结果。还有一件事,我自己代码中的每个函数都在自己的部分中。
arm-none-eabi-objdump
roejwanj1#
您可以使用nm和size来取得函式和ELF区段的大小。要获取函数(以及具有静态存储持续时间的对象)的大小,请执行以下操作:
nm
size
$ nm --print-size --size-sort --radix=d tst.o
第二列以十进制显示函数和对象的大小。若要取得区段的大小:
$ size -A -d tst.o
第二列以十进制显示各部分的大小。
nlejzf6q2#
readelf实用程序可方便地显示各种截面信息,包括截面大小,例如:
arm-none-eabi-readelf -e foo.o
如果您对运行时内存占用量感兴趣,则可以忽略没有设置'A'(分配)标志的部分。
rryofs0p3#
puncover使用objdump和一些其他gcc工具来生成html页面,您可以轻松地浏览这些页面,以了解代码和数据空间的走向。这是一个比gcc工具的文本输出更好的前端。
puncover
objdump
ffvjumwh4#
当10年后再次讨论这个问题时,我们必须提到readelf和nm的基于Python的小 Package 器elf-size-analyze:
4条答案
按热度按时间roejwanj1#
您可以使用
nm
和size
来取得函式和ELF区段的大小。要获取函数(以及具有静态存储持续时间的对象)的大小,请执行以下操作:
第二列以十进制显示函数和对象的大小。
若要取得区段的大小:
第二列以十进制显示各部分的大小。
nlejzf6q2#
readelf实用程序可方便地显示各种截面信息,包括截面大小,例如:
如果您对运行时内存占用量感兴趣,则可以忽略没有设置'A'(分配)标志的部分。
rryofs0p3#
puncover
使用objdump
和一些其他gcc工具来生成html页面,您可以轻松地浏览这些页面,以了解代码和数据空间的走向。这是一个比gcc工具的文本输出更好的前端。
ffvjumwh4#
当10年后再次讨论这个问题时,我们必须提到readelf和nm的基于Python的小 Package 器elf-size-analyze: