Печатать Log4CXX исключение стека трассировки
Используя Log4CXX_ERROR я могу печатать только e.what().
catch (const std::exception e)
{
logger->error("exception:" << e.what());
//logger->error("exception:" << e); //not allowed
}
Как я могу напечатать трассировку стека исключений, используя log4cxx?
1 ответ
Сначала добавьте функцию-обработчик:
void trace() {
void *array[20];
size_t size;
/* store up to 20 return address of the current program state in array
and return the exact number of values stored */
size = (size_t)backtrace(array, 20);
/* return names of functions from the backtrace list in array and
write result immediately to stderr */
backtrace_symbols_fd(array, size, STDERR_FILENO);
}
и затем вызовите эту функцию, чтобы сбросить трассировку стека на stderr.