2011-06-15 6 views
5

大きな静的ライブラリ(.lib)ファイルに問題があり、テンプレートクラスの無差別な使用からコードが肥大している疑いがあります。ライブラリのシンボルを分析して、どれがファイルサイズの大部分を占めているかを確認したいと思います。ライブラリファイル内のシンボルを解析するためのユーティリティ

私の実行ファイルをこのライブラリとリンクすると、出力結果はサイズに敏感です(約20Mb)ので、リンカは明らかに多くの冗長シンボルを削除しています。

私はdumpbinを使ってシンボルとヘッダを生成することができますが、問題のライブラリがかなり大きく(900Mb)、このダンプはユーティリティなしではほとんど使用できないことがわかりましたそれを解析し報告するためのものです。

明らかに私は自分自身でこれを書くことができましたが、誰もがこれに利用できるフリーウェアを推薦できるかどうか疑問に思っていましたか?

答えて

1

私は本当によく働く1(SymbolSort)を見つけ、私が必要とするまさに私に与える:

1

これはあなたのライブラリですか?もしそうなら、generate a link mapにはライブラリ内のコードのレイアウトが記述されています。ここで必要な情報はよりフレンドリーな形で提供されます。

これを行うためのソースコードへのアクセス権がない場合は、Perlやその他のオープンソーススクリプトツールを使用してdumpbinの出力をクラッキングすることができます。

EDIT:LibDumpにスピンを与えることもできます。hereからダウンロードできます。私はこれを自分で使っていない。

+0

私にリンカによって取り除かれているすべてのシンボルが表示されますか? – StevieG

+0

あなたはそれが何を意味するかわからない。各機能の開始位置と大きさを表示します。これはあなたが望むものではありませんか? –

+0

私が理解しているように、リンカは使用されていないすべての記号を取り除くので、実際に実行可能ファイルよりも多くのシンボルが.libファイルにあります(私が間違っていない限り)。実行可能ファイルだけでなく、.libファイル内のすべてのシンボルを参照する必要があります。リンク時にリンクマップを作成すると、これが表示されるか、結果の.exeによって使用されるマップのみが表示されるのだろうか – StevieG

関連する問題