2010-11-16 6 views
9

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

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

Спасибо!

+1

http://stackoverflow.com/questions/229069/dead-code-detection-in-legacy-cc-project – Veger

ответ

7

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

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

-1

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

+5

Не совсем "gcov создает файл журнала с именем sourcefile.gcov, который указывает, сколько раз каждая строка Исходный файл sourcefile.c выполнен ». Это динамический анализ не статический. – stnr

 Смежные вопросы

  • Нет связанных вопросов^_^