Более простой и общий способ будет следующим:
a) Включить трассировку вывода на основе условий времени выполнения (например, определенной переменной среды) / переключателя отладки
b) Записывать вход и выход каждой функции вместе с идентификатором потока (для работы с многопоточными приложениями). Для этого используйте директивы препроцессора __FILE__ and __LINE__
.
в) Анализ журналов с помощью хорошего приложения для просмотра журналов (например, DebugView в Windows)