#include "common/stack_unwind.h" #include "debug/debug.h" namespace { bool IsValid(uint64_t* rbp) { return rbp && *rbp != kStackBaseSentinel; } } // namespace void StackUnwind(uint64_t rbp) { uint64_t depth_limit = 10; dbgln("-- Begin Stack --"); uint64_t* rbp_ptr = reinterpret_cast(rbp); while (IsValid(rbp_ptr) && depth_limit > 0) { uint64_t rip = *(rbp_ptr + 1); dbgln("RIP: {x}", rip); rbp_ptr = reinterpret_cast(*rbp_ptr); depth_limit--; } dbgln("-- End Stack --"); }