Пишу трассировщик для проги; перед компиляцией
в каждое тело функции простеньким скриптом
вставляется создание объекта Tracer:
Было:
void someFunc()
{
doSomethingElse();
}
Стало:
void someFunc()
{
Tracer _tracer("someFunc()");
doSomethingElse();
}
В конструкторе -- вывод ">> someFunc()" в лог, в деструкторе -- вывод "<< someFunc()".
Ну, вы знаете. Очевидная и уже тыщщу раз обмусоленная тема.
Теперь захотелось ещё отслеживать исключения. Факт исключения отслеживатеся функцией
std::uncaught_exception(), это мне известно.
Но вот как получить доступ к объекту исключения? Хочется вызвать у этого объекта
метод what(), чтобы получить информацию об исключении.
Есть какие-то способы это сделать, пусть даже непортабельные? Хотя бы даже в gcc?