diff options
Diffstat (limited to 'Userland/Services')
-rw-r--r-- | Userland/Services/CrashDaemon/main.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/Userland/Services/CrashDaemon/main.cpp b/Userland/Services/CrashDaemon/main.cpp index 5f6ea14fdf..c8b314b10e 100644 --- a/Userland/Services/CrashDaemon/main.cpp +++ b/Userland/Services/CrashDaemon/main.cpp @@ -74,8 +74,20 @@ static void print_backtrace(const String& coredump_path) if (thread_index > 0) dbgln(); dbgln("--- Backtrace for thread #{} (TID {}) ---", thread_index, thread_info.tid); - for (auto& entry : backtrace.entries()) + for (auto& entry : backtrace.entries()) { +#ifndef BACKTRACE_DEBUG dbgln("{}", entry.to_string(true)); +#else + auto region = coredump->region_containing(entry.eip); + String name; + u32 base_addr { 0 }; + if (region) { + name = region->region_name; + base_addr = region->region_start; + } + dbgln("{} ({} base: {:p}, offset: {:p})", entry.to_string(true), name, base_addr, entry.eip - base_addr); +#endif + } ++thread_index; return IterationDecision::Continue; }); |