Использование GCC для поиска недоступных функций («мертвый код») - PullRequest
10 голосов
/ 16 ноября 2010

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

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

Спасибо!

Ответы [ 2 ]

8 голосов
/ 16 ноября 2010

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

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

0 голосов
/ 16 ноября 2010

gcov - это то, что вы ищете.У вас есть то, что указано в вопросе, вы не смотрели на это?

...