Я сгенерировал граф вызовов моей программы на C / C ++ с помощью gcc, однако этот граф содержит много встроенных функций, таких как strcmp, fprintf и т. Д., Которые меня не интересуют. Есть ли какие-либо опции gcc, которые могут помочь опустить такие виды функции? Я знаю, что в египте есть опция —omit, но для этого необходимо, чтобы пользователи указали список функций, которые они знают заранее. Это означает, что если я хочу удалить все встроенные функции, описанные выше, мне нужен полный список функций, которые я не уверен, где получить.
Благодарю.
Полный список функций стандартной библиотеки можно найти в стандарте языка. Этот список, однако, не включает вспомогательные, специфичные для компилятора функции.
Смотрите, например, Annex B/Library summary
стандарта С с 1999 года.
Если у вас нет стандарта, получите его черновики онлайн.
Вы можете указать функцию прибора самостоятельно. Увидеть эта ссылка для получения дополнительной информации о том, как.
Реализация функции intrumentation позволяет указать функцию, которая будет вызываться перед каждым вызовом функции, и ей будут передаваться адреса вызываемой функции и адрес, из которого она была вызвана.
После этого вы можете использовать addr2line
инструмент для преобразования адресов из инструментального прогона. Это позволяет вам извлекать функции и фильтровать их. Вам нужно разобрать текстовые файлы и построить граф вызовов самостоятельно, но dot
смехотворно легко начать.