Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
#define LOG_TRACE() TraceLogger traceLogger(__FILE__, __FUNCTION__, __LINE__)
void abc() {
LOG_TRACE();
}
она должна уметь сообщать свое состояние в случае ошибки. «Состояние» — это 1) потоки, 2) стек функций в них и 3) аргументы функций.Вы всё правильно пишете, только вот логгировать каждый вызов функции, включая аргументы — сомнительное решение. Программа должна уметь в случае критической ошибки сохранять свой дамп и завершаться без порчи пользовательских данных. А при наличии у разработчика отладочных символов он из этого дампа вынет и стеки всех потоков, и аргументы вызываемых функций и много чего ещё.
Небольшой логгер стека вызовов для C++