1) есть стек вызовов предоставляется в VS, но не всегда показывает последовательность функций, вызываемых кодом пользователя. Он просто показывает функции из окон & непосредственно функция, которую вы ставите точку останова & не все функции, вызываемые до тех пор
2) Иерархия вызовов также не очень полезно.
Вы можете определить два макроса
#define IN std::cout<<std::string(__FUNCTION__)<<" begins.."<<std::endl;
#define OUT std::cout<<std::string(__FUNCTION__)<<" ends.."<<std::endl;
Используйте эти макросы в начале и конце каждой функции. Это напечатает весь поток.
Других решений пока нет …