Могу ли я определить неиспользуемый заголовок C ++, посмотрев на символы в двоичном файле? - PullRequest
0 голосов
/ 29 апреля 2020

Можно ли идентифицировать неиспользуемые заголовки C ++, просматривая символы в двоичном файле?

Моя конечная цель - удалить случайно / ненужные включенные заголовки C ++. В результате некоторого поиска я понял, что для этого нет современных бесплатных Linux инструментов.

Обнаружение лишних # включений в C / C ++?

Как мне обнаружить ненужные файлы #include в большом проекте C ++?

Мне интересно, возможно ли достичь этого на более высоком уровне, посмотрев на символы. Схема, показанная ниже:

image

mycomponent.cc включает в себя component_1.hh и component_2.hh, и предположим, что component_2.hh является неиспользованным включением, и они динамически связаны.

Вот план: Предположим, я знаю все библиотеки, на которые я должен ссылаться в первую очередь. Если я получу все неопределенные символы из mycomponent.so, скажем my_list, и сравню их со всеми определенными символами в component_1.so и component_2.so. Если component_2.so не содержит символов из my_list. Тогда я бы знал, что component_2.so не нужен, тогда я могу go вернуться, чтобы посмотреть, какие заголовки из component_2 должны быть удалены. Конечно, это будет работать, только если все заголовки из component_2 не используются в my_component

Это жизнеспособно?

1 Ответ

1 голос
/ 29 апреля 2020

Краткий ответ - нет. Все символы, которые на самом деле не используются кодом, будут оптимизированы и не попадут в окончательный двоичный файл. И даже если это не так, нет никакого способа определить из двоичного файла , из какого заголовка (-ов) были получены исходные символы.

То, что вам нужно, это исходный код анализатор, который проанализирует ваш исходный код и укажет на любые проблемы, такие как неиспользуемый / ненужный заголовок.

...