Как опустить встроенные функции в графе вызовов

Я сгенерировал граф вызовов моей программы на C / C ++ с помощью gcc, однако этот граф содержит много встроенных функций, таких как strcmp, fprintf и т. Д., Которые меня не интересуют. Есть ли какие-либо опции gcc, которые могут помочь опустить такие виды функции? Я знаю, что в египте есть опция —omit, но для этого необходимо, чтобы пользователи указали список функций, которые они знают заранее. Это означает, что если я хочу удалить все встроенные функции, описанные выше, мне нужен полный список функций, которые я не уверен, где получить.

Благодарю.

1

Решение

Полный список функций стандартной библиотеки можно найти в стандарте языка. Этот список, однако, не включает вспомогательные, специфичные для компилятора функции.

Смотрите, например, Annex B/Library summary стандарта С с 1999 года.

Если у вас нет стандарта, получите его черновики онлайн.

1

Другие решения

Вы можете указать функцию прибора самостоятельно. Увидеть эта ссылка для получения дополнительной информации о том, как.
Реализация функции intrumentation позволяет указать функцию, которая будет вызываться перед каждым вызовом функции, и ей будут передаваться адреса вызываемой функции и адрес, из которого она была вызвана.

После этого вы можете использовать addr2line инструмент для преобразования адресов из инструментального прогона. Это позволяет вам извлекать функции и фильтровать их. Вам нужно разобрать текстовые файлы и построить граф вызовов самостоятельно, но dot смехотворно легко начать.

0

По вопросам рекламы [email protected]