2

我希望能够估计我的 C++ 程序使用了多少代码和静态数据?

有没有办法通过查看可执行文件或目标文件来找出这个问题?或者也许我可以在运行时做些什么?

objdump 和 readelf 有帮助吗?

4

4 回答 4

5

“尺寸”是传统的工具。“readelf”有很多选择。

$ size /bin/sh
   text    data     bss     dec     hex filename
 712739   37524   21832  772095   bc7ff /bin/sh
于 2008-08-30T06:24:05.780 回答
2

如果您想下一步确定要关注的函数和数据结构以减少占用空间,nm 的 --size-sort 参数可以向您显示:

$ nm --size-sort /usr/bin/fld | tail -10
000000ae T FontLoadFontx
000000b0 T CodingByRegistry
000000b1 t ShmFont
000000ec t FontLoadw
000000ef T LoadFontFile
000000f6 T FontLoadDFontx
00000108 D fSRegs
00000170 T FontLoadMinix
000001e7 T main
00000508 T FontLoadBdf
于 2008-09-05T22:55:19.527 回答
1

readelf确实会有所帮助。您可以使用该-S选项;这将显示所有部分的大小。.text是(大部分)您的可执行代码。.data并且.rodata是您的静态数据。还有其他部分,其中一些在运行时使用,其他部分仅在链接时使用。

于 2008-08-30T00:19:35.703 回答
1
尺寸-A
于 2008-09-20T03:34:55.890 回答