Инструмент для регистрации вызовов функций?

Существует ли инструмент для C ++, который может регистрировать вызовы функций и что было передано?

Пример:

Display::Resize(1024,768)
Player::Jump()
...

Или что-то вроде этого, чтобы линейно видеть поток выполнения без вызова Log в каждом методе каждого класса?

Я использую Visual Studio в качестве IDE, но любой внешний инструмент или плагин, который мог бы это сделать, был бы полезен. Есть ли?

Спасибо

0

Решение

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

Увидеть этот для примеров C ++.

Редактировать: небольшой пример из AspectC ++ для отслеживания вызова из функции-члена (в этом случае Iter :: Reset)

aspect Tracer
{
advice call("% %Iter::Reset(...)") : before()
{
cerr << "about to call Iter::Reset for " << JoinPoint::signature() << endl;
}
};
0

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

это может быть полезно: _penter крюк

и вот пример:

1

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

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector