10

(非常に) 大きな C++ プロジェクトで、静的に到達できない関数を見つける方法を探していました。ここで提案されている doxygen やその他の静的解析ツールを使用してみましたが、プロジェクトが複雑すぎて処理できないようでした。最後に、GCC ツール (g++、gprof、gcov など) を使用することが最も安全なオプションであると判断しましたが、その方法はわかりませんでした。

g++ の最適化により、静的に到達できない関数が排除されると思いますが、排除された関数の名前を取得する方法がわかりません。

何か提案はありますか?

4

2 に答える 2

8

通常、デッド コードの最適化はリンカーによって行われます。コンパイラには概要がありません。ただし、コンパイラは未使用のstatic関数を削除した可能性があります (内部リンケージがあるため)。

したがって、GCC オプションではなく、ld オプションを確認する必要があります。欲しいようです--print-gc-sections。ただし、GCC で各関数を独自のセクションに配置する必要があることに注意してください-ffunction-sections。デフォルトでは、GCC はすべての関数を同じセクションに配置しますが、ld は未使用の関数を削除するほどスマートではありません。未使用のセクションのみを削除できます。

于 2010-11-16T15:11:32.707 に答える
-1

gcovはあなたが探しているものです。質問に記載されていますが、見たことはありませんか?

于 2010-11-16T15:09:59.150 に答える