2008-08-30 12 views
2

私のC++プログラムで&の静的データがどのくらいのコードを使用しているのか見積もりたいですか?Linux:プログラムのコードと静的データサイズを見積もる最も良い方法は何ですか?

実行可能ファイルまたはオブジェクトファイルを調べることでこれを見つける方法はありますか?または、私は実行時に何かできるのでしょうか?

will objdump & readelf help?

答えて

5

「サイズ」は従来のツールです。 "readelf"にはたくさんのオプションがあります。

$ size /bin/sh 
    text data  bss  dec  hex filename 
712739 37524 21832 772095 bc7ff /bin/sh 
1

readelf実際に役立ちます。 -Sオプションを使用できます。すべてのセクションのサイズが表示されます。 .textは実行可能コードの大部分です。 .dataおよび.rodataは静的なデータです。他のセクションもあり、そのうちのいくつかは実行時に使用され、その他はリンク時にのみ使用されます。

2

あなたはフットプリントの削減のために集中するための関数とデータ構造を特定する次のステップを取るしたい場合は、nmの--sizeソート引数はお見せすることができます

$ 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 
関連する問題