Array stackTraceToBackTrace(const StackTrace& st) { std::vector<void*> bt_pointers; st.get(bt_pointers); Array ret; if (RuntimeOption::FullBacktrace) { for (unsigned int i = 0; i < bt_pointers.size(); i++) { StackTrace::FramePtr f = StackTrace::Translate(bt_pointers[i]); if (RuntimeOption::TranslateSource) { SourceInfo::TheSourceInfo.translate(f); } Array frame; frame.set("file", String(f->filename)); frame.set("line", f->lineno); frame.set("function", String(f->funcname)); frame.set("args", ""); frame.set("bt", (int64)bt_pointers[i]); ret.append(frame); } } else { for (unsigned int i = 0; i < bt_pointers.size(); i++) { Array frame; frame.set("file", ""); frame.set("line", 0LL); frame.set("function", ""); frame.set("args", ""); frame.set("bt", (int64)bt_pointers[i]); ret.append(frame); } ret.set("bts", String(st.hexEncode())); } return ret; }