У меня есть некоторый код исключения, как показано ниже
class BaseException : public std::exception {
public:
BaseException(string str) : error_string(str){
printStackTrace();
}
BaseException() = default;
virtual ~BaseException() throw() = default;
virtual const char *what() const throw(){return error_string.c_str();}
void printStackTrace() {
void *array[10];
size_t size;
size = backtrace(array, 10);
backtrace_symbols_fd(array, size, STDERR_FILENO);
}
string error_string;
};
void baz() {
throw BaseException("tetsingException");
}
void bar() { baz(); }
void foo() { bar(); }
int main() {
try{
foo();
}
catch(BaseException &e){
cout << e.what();
}
return 0;
}
Всякий раз, когда я запускаю это, я получаю ниже выходных
/home/user/sample/Debug/Exceptionwithstrace[0x4010c3]
/home/user/sample/Debug/Exceptionwithstrace[0x40104f]
/home/user/sample/Debug/Exceptionwithstrace[0x400eb5]
/home/user/sample/Debug/Exceptionwithstrace[0x400f1b]
/home/user/sample/Debug/Exceptionwithstrace[0x400f26]
/home/user/sample/Debug/Exceptionwithstrace[0x400f36]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7fda68538f45]
/home/user/sample/Debug/Exceptionwithstrace[0x400da9]
tetsingException
имена функций не печатаются, мне нужно получить печать функцииНазовите также, как показано ниже, как получить что-то вроде ниже
/home/user/sample/Debug/Exceptionwithstrace[BaseException]
/home/user/sample/Debug/Exceptionwithstrace[baz]
/home/user/sample/Debug/Exceptionwithstrace[bar]
/home/user/sample/Debug/Exceptionwithstrace[foo]
/home/user/sample/Debug/Exceptionwithstrace[main]