Использование GCC для поиска недостижимых функций ("мертвый код")

Эй, ребята, я искал способ найти статически недостижимые функции в (очень) большом проекте C++. Я попытался с помощью Doxygen и другие инструменты статического анализа, предложенные здесь, но казалось, что проект слишком сложен для них. Наконец, я решил использовать инструменты GCC (g++, gprof, gcov и т. д.) является самым безопасным вариантом, хотя я не мог понять, как это сделать. Я думаю, что оптимизация g++ устраняет статически недостижимые функции, но я не уверен, как получить имена функций, которые он устраняет.

У вас есть какие-либо предложения?

спасибо!

2 ответов


оптимизация мертвого кода обычно выполняется компоновщиком-компилятор не имеет обзора. Однако компилятор, возможно, устранил неиспользуемое static функции (поскольку они имеют внутренние связи).

поэтому вы не должны смотреть на параметры GCC, а на параметры ld. Кажется, вы хотите --print-gc-sections. Однако обратите внимание, что вы, вероятно, хотите, чтобы GCC поместил каждую функцию в свой собственный раздел,-ffunction-sections. По умолчанию GCC помещает все функции в один раздел, а ld не является умным достаточно исключить неиспользуемые функции - он может только исключить неиспользуемые разделы.


gcov это то, что вы ищете. Вы это перечислили в вопросе, разве вы не смотрели на это?