Существует ли инструмент для C ++, который может регистрировать вызовы функций и что было передано?
Пример:
Display::Resize(1024,768)
Player::Jump()
...
Или что-то вроде этого, чтобы линейно видеть поток выполнения без вызова Log в каждом методе каждого класса?
Я использую Visual Studio в качестве IDE, но любой внешний инструмент или плагин, который мог бы это сделать, был бы полезен. Есть ли?
Спасибо
Более экзотическим решением может быть посмотреть Аспектно-ориентированное программирование. Одним из фундаментальных примеров является регистрация вызова функции.
Увидеть этот для примеров C ++.
Редактировать: небольшой пример из AspectC ++ для отслеживания вызова из функции-члена (в этом случае Iter :: Reset)
aspect Tracer
{
advice call("% %Iter::Reset(...)") : before()
{
cerr << "about to call Iter::Reset for " << JoinPoint::signature() << endl;
}
};
это может быть полезно: _penter крюк
и вот пример:
Вы можете установить точки останова, которые автоматически выводят обратную трассировку, когда интересующие вас функции вызываются с помощью вашего отладчика, или использовать специализированный инструмент, такой как xtrace.