21char** backtrace_symbols (
void ** ,
int size) {
32 demangle(
char * mangled )
35 char * function_begin = ::strchr( mangled,
'(' );
36 if ( function_begin ) {
37 char * function_end = ::strchr( ++function_begin,
'+' );
38 if ( function_end && function_end != function_begin)
40 std::string fname(function_begin, function_end - function_begin);
41 char * name = abi::__cxa_demangle( fname.c_str(), 0, 0, &status );
44 return std::string( mangled );
47 std::ostringstream
out;
48 out << std::string(mangled, function_begin - mangled) << name << function_end;
53 return std::string( mangled );
57 print_function( std::ostream & out,
const char * function,
int verbosity )
65 const char * end = strchr( function,
'(' );
68 const char * beg = end;
69 while ( beg > function ) {
70 if ( *(beg-1) ==
' ' ) {
75 out.write( beg, end - beg );
83std::vector<std::string>
86 std::vector<std::string>
stack;
92 stack.push_back( demangle(symbols[i]) );
107 std::ostringstream out;
virtual void *const * stack_symbols() const =0
virtual int line_number() const =0
virtual int stack_size() const =0
std::string position(int verbosity=ers::Configuration::instance().verbosity_level()) const
virtual const char * package_name() const =0
virtual const char * file_name() const =0
std::vector< std::string > stack() const
virtual const char * function_name() const =0
FELIX Initialization std::string initerror FELIX queue timed out