static void output_stack_trace( FILE *out, const void **BacktracePointers ) { if( BacktracePointers[0] == BACKTRACE_METHOD_NOT_AVAILABLE ) { fprintf( out, "No backtrace method available.\n"); return; } if( !BacktracePointers[0] ) { fprintf( out, "Backtrace was empty.\n"); return; } for( int i = 0; BacktracePointers[i]; ++i) { BacktraceNames bn; bn.FromAddr( BacktracePointers[i] ); bn.Demangle(); /* Don't show the main module name. */ if( bn.File == g_pCrashHandlerArgv0 ) bn.File = ""; if( bn.Symbol == "__libc_start_main" ) break; fprintf( out, "%s\n", bn.Format().c_str() ); } }
static void output_stack_trace( FILE *out, const void **BacktracePointers ) { if( BacktracePointers[0] == BACKTRACE_METHOD_NOT_AVAILABLE ) { fprintf( out, "No backtrace method available.\n"); return; } if( !BacktracePointers[0] ) { fprintf( out, "Backtrace was empty.\n"); return; } for( int i = 0; BacktracePointers[i]; ++i) { BacktraceNames bn; void * bob; bob = malloc(128); memcpy ( bob, (BacktracePointers[i]), 128 ); // char ** j = backtrace_symbols( &bob, 1); //cout<<"++"<<endl; //cout<<"--"<<j[0]<<"-"<<int(&bob)<<endl; bn.FromAddr( BacktracePointers[i] ); bn.Demangle(); /* Don't show the main module name. */ if( bn.File == g_pCrashHandlerArgv0 ) bn.File = ""; if( bn.Symbol == "__libc_start_main" ) break; fprintf( out, "%s\n", bn.Format().c_str() ); } }