Генератор потока управления для кода в переполнении стека

Я ищу генератор графа Flow Control для исходного кода, написанного на C ++.
Вы знаете какой-нибудь статический генератор с открытым исходным кодом?

Я хотел бы использовать его в своем дипломном проекте для создания графика потока управления и выделения путей, которые были выполнены во время выполнения анализируемого приложения.

Я уже написал весь движок для записи выполненных строк.

Спасибо за все ответы.

1

Решение

CoFlo — это бесплатный инструмент для анализа исходного кода с открытым исходным кодом, который генерирует и анализирует графики потоков управления из исходного кода C и C ++.

1

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

Ты можешь использовать clang или же llvm.

Сначала скомпилируйте вашу программу в llvm ir

clang++ -emit-llvm -S prog.cpp -o prog.ll

Тогда используйте opt генерировать график потока управления.

opt --dot-cfg prog.ll

Это выводит файл точек, который можно просмотреть с помощью Graphviz. На Mac вы можете сделать brew install graphviz и выполните следующее, чтобы сгенерировать png.

dot -Tpng cfg.main.dot -o main.png

У вас должен быть один файл точек для каждой функции в вашей программе, поэтому может быть проще написать скрипт для автоматического преобразования их всех в pngs

1