У меня есть приложение C++, которое выполняет множество различных задач. Приложение большое, и у меня возникают проблемы с поиском кода для конкретной задачи. Есть ли способ получить список всех функций в моем проекте (исходный код) при выполнении конкретной задачи, которая может быть начатый оболочкой, как обычный процесс. Я не хочу идти шаг за шагом в gdb, так как требуется много времени.Получить список функций для процесса
ответ
Doxygen может сделать эту работу для вас с помощью CALL_GRAPH
и CALLER_GRAPH
настройки: https://www.stack.nl/~dimitri/doxygen/manual/config.html#cfg_caller_graph
Но помните, что это трудная задача для C++, поскольку он не может следовать за виртуальные вызовы, абстрактные классы и тому подобное. Так что это только гадание от прямых вызовов функций.
Профилирование вашего приложения с помощью Valgrind позволяет создать полный график вызовов во время выполнения. См. http://valgrind.org/docs/manual/cl-manual.html
Мощный инструмент под названием KCacheGrind используется для визуализации сгенерированных данных. Эквивалент Windows: WinCacheGrind.
Как это делается во время выполнения, вы можете сосредоточиться на конкретном процессе, который хотите профилировать, тогда как статические решения создадут вызовы графа, которые, вероятно, слишком велики, чтобы быть полезными.
вы можете написать сценарий, через который вы получите имена всех функций в вашем проекте. –
какой сценарий, любое направление для этого – Khanaza
Что я сделал однажды, был написан скрипт python для поиска всех функций в программе на C++ с использованием регулярных выражений. –