104    if(stack_trace_depth > 0)
 
  106        std::vector<void *> array;
 
  107        array.resize(std::max(stack_trace_depth, 1'000));
 
  108        int const size(backtrace(&array[0], stack_trace_depth));
 
  112        std::unique_ptr<
char *, 
decltype(&::free)> stack_string_list(backtrace_symbols(&array[0], size), &::free);
 
  113        for(
int idx(0); idx < size; ++idx)
 
  115            char const * stack_string(stack_string_list.get()[idx]);
 
  116            stack_trace.push_back(stack_string);
 
 
  153    if(stack_trace_depth > 0)
 
  155        std::vector<void *> array;
 
  156        array.resize(stack_trace_depth);
 
  157        int const size(backtrace(&array[0], stack_trace_depth));
 
  161        std::unique_ptr<
char *, 
decltype(&::free)> stack_string_list(backtrace_symbols(&array[0], size), &::free);
 
  162        for(
int idx(0); idx < size; ++idx)
 
  164            char const * raw_stack_string(stack_string_list.get()[idx]);
 
  172            std::string filename;
 
  173            std::string raw_function_name;
 
  179            char const * s(raw_stack_string);
 
  180            char const * start(s);
 
  188                filename = std::string(start, s - start);
 
  201                    raw_function_name = std::string(start, s - start);
 
  231                        addr = std::string(start, s - start);
 
  245                            std::string addr2line(
"eu-addr2line --pid=" 
  246                                            + std::to_string(getpid())
 
  249                            std::unique_ptr<FILE, int(*)(FILE *)> p(popen(addr2line.c_str(), 
"r"), &::pclose);
 
  253                                int const c(fgetc(p.get()));
 
  281                        if(!raw_function_name.empty())
 
  288                            result += 
" <no function name>";
 
  299                stack_trace.push_back(std::string(raw_stack_string));   
 
  303                stack_trace.push_back(result);