3

A が B に依存する 2 つの C++ パッケージ A と B があります。A に B コードの最小限の部分を飲み込ませて、B を完全に破棄できるようにすることで、この依存関係を解消したいと考えています。

パッケージAをプロファイリングして、Bから持ち込む必要があるクラス/関数などを正確に見つける方法についてアドバイスはありますか?

編集: パッケージ B を単純に削除し、(多くの) コンパイル A のサイクルを実行し、B からファイルをコピーし、それに応じて Makefile.am を更新しました。これで、必要以上のものでパッケージ A を肥大化させたと確信しています。実行可能ファイル/ライブラリで使用されていない A` コードのセクションを見つけるにはどうすればよいですか?

4

2 に答える 2

1

考えられる対処法は次の3つだと思います。

  1. 本当に必要なものだけをインポートする: 実行したことを元に戻し、もう一度実行します。ただし、今回は B からファイル全体をコピーするのではなく、コンパイラーが欠落していると通知した単一の関数だけをコピーします。

  2. 現在の状況で、何らかのツールにコードを分析してもらうか (無料のソース コード アナライザーを探す (関数依存ツリー)および無料のソース コード アナライザーを探す (関数依存ツリー)を参照)、またはすべての A を使用して広範なコードを記述します。コードカバレッジ分析を実行します。

  3. B からコピーしたソース内の関数をコメント アウトします (ヘッダー内ではありません)。これで、リンカは不足している関数について文句を言います。これらのコメントを外し、ヘッダーの宣言を含め、残りを削除します。これは最初とは逆のアプローチです。
于 2012-11-21T10:48:11.810 に答える
0

たぶん、objdump が役に立つ情報を提供してくれるでしょう。バイナリ (objdump -t) で使用すると、インポートされた関数に関する有用な情報を表示できるはずです。

于 2012-04-26T18:44:45.983 に答える