2016-02-10 3 views
0

У меня есть приложение C++, которое выполняет множество различных задач. Приложение большое, и у меня возникают проблемы с поиском кода для конкретной задачи. Есть ли способ получить список всех функций в моем проекте (исходный код) при выполнении конкретной задачи, которая может быть начатый оболочкой, как обычный процесс. Я не хочу идти шаг за шагом в gdb, так как требуется много времени.Получить список функций для процесса

+0

вы можете написать сценарий, через который вы получите имена всех функций в вашем проекте. –

+0

какой сценарий, любое направление для этого – Khanaza

+0

Что я сделал однажды, был написан скрипт python для поиска всех функций в программе на C++ с использованием регулярных выражений. –

ответ

1

Doxygen может сделать эту работу для вас с помощью CALL_GRAPH и CALLER_GRAPH настройки: https://www.stack.nl/~dimitri/doxygen/manual/config.html#cfg_caller_graph

Но помните, что это трудная задача для C++, поскольку он не может следовать за виртуальные вызовы, абстрактные классы и тому подобное. Так что это только гадание от прямых вызовов функций.

0

Профилирование вашего приложения с помощью Valgrind позволяет создать полный график вызовов во время выполнения. См. http://valgrind.org/docs/manual/cl-manual.html

Мощный инструмент под названием KCacheGrind используется для визуализации сгенерированных данных. Эквивалент Windows: WinCacheGrind.

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