MCPcopy Create free account
hub / github.com/agraef/pure-lang / pure_debug_backtrace

Function pure_debug_backtrace

pure/runtime.cc:6993–7019  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6991}
6992
6993static void pure_debug_backtrace(ostream& out)
6994{
6995 interpreter& interp = *interpreter::g_interp;
6996 list<DebugInfo>::iterator it = interp.debug_info.begin(),
6997 end = interp.debug_info.end();
6998 if (it == end) return;
6999 size_t save_sz = interp.sstk_sz;
7000 interp.sstk_sz = interp.debug_info.back().sz;
7001 get_vars(interp, interp.debug_info.rend());
7002 for (; it != end; ++it) {
7003 DebugInfo& d = *it;
7004 if (d.r) {
7005 out << stacklab(interp, it) << " [" << d.n << "] "
7006 << pname(interp, d.e) << ": " << *d.r << ";\n";
7007 } else if (d.e->tag > 0 &&
7008 interp.externals.find(d.e->tag) != interp.externals.end()) {
7009 ExternInfo &info = interp.externals[d.e->tag];
7010 out << stacklab(interp, it) << " [" << d.n << "] "
7011 << pname(interp, d.e) << ": " << info << ";\n";
7012 } else {
7013 out << stacklab(interp, it) << " [" << d.n << "] "
7014 << pname(interp, d.e) << ":\n";
7015 }
7016 print_vars(out, interp, d);
7017 }
7018 interp.sstk_sz = save_sz;
7019}
7020
7021extern "C"
7022void pure_debug_rule(void *_e, void *_r)

Callers 1

pure_invokeFunction · 0.85

Calls 6

get_varsFunction · 0.85
stacklabFunction · 0.85
print_varsFunction · 0.85
pnameFunction · 0.70
endMethod · 0.45
findMethod · 0.45

Tested by

no test coverage detected