Как вывести список всех вызовов функции во время выполнения?

Есть ли способ перечислить (показать в VS, записать в файл) всех вызывающих (объектов, функций) функции во время работы программы? Возможно, используя отладчик?

Мне нужно записать все вызовы (в том числе вызывающие) функции от запуска программы до ее завершения.

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

Если Visual Studio не предоставляет эту функцию, есть ли другие решения этой проблемы?

3 ответа

Решение

Инструмент профилирования VS также будет полезен для вас, вы можете выбрать метод "CPU sampling".

После того, как он закончится, вы можете выбрать "Caller/Callee".

Ссылка:

https://docs.microsoft.com/en-us/visualstudio/profiling/caller-callee-view

Обновление: мы можем экспортировать отчет:

Если ваша программа является приложением.NET, вы можете использовать мой инструмент Runtime Flow для просмотра всех вызывающих функций во время работы программы.

ИМО, ваше лучшее решение - добавить возможности ведения журнала.

Найти все вызовы для вашей функции. Напечатайте некоторую информацию в файл журнала перед вызовом функции. Это даст вам аннотированную историю вызовов функций.

Другая идея состоит в том, чтобы использовать инструмент документирования, такой как Doxygen, который может печатать диаграммы "вызывающего" и "вызываемого". Однако это не во время выполнения вашей программы.

Другие вопросы по тегам