diff --git a/Userland/Libraries/LibJS/Runtime/VM.cpp b/Userland/Libraries/LibJS/Runtime/VM.cpp index 53014ffe9f..4069263041 100644 --- a/Userland/Libraries/LibJS/Runtime/VM.cpp +++ b/Userland/Libraries/LibJS/Runtime/VM.cpp @@ -544,4 +544,10 @@ void VM::promise_rejection_tracker(const Promise& promise, Promise::RejectionOpe } } +void VM::dump_backtrace() const +{ + for (ssize_t i = m_call_stack.size() - 1; i >= 0; --i) + dbgln("-> {}", m_call_stack[i]->function_name); +} + } diff --git a/Userland/Libraries/LibJS/Runtime/VM.h b/Userland/Libraries/LibJS/Runtime/VM.h index 74c2bd96d5..90a2d701ce 100644 --- a/Userland/Libraries/LibJS/Runtime/VM.h +++ b/Userland/Libraries/LibJS/Runtime/VM.h @@ -71,6 +71,8 @@ public: void set_exception(Exception& exception) { m_exception = &exception; } void clear_exception() { m_exception = nullptr; } + void dump_backtrace() const; + class InterpreterExecutionScope { public: InterpreterExecutionScope(Interpreter&);