diff options
Diffstat (limited to 'Kernel/Thread.cpp')
-rw-r--r-- | Kernel/Thread.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/Kernel/Thread.cpp b/Kernel/Thread.cpp index 71194807c1..e2370135e0 100644 --- a/Kernel/Thread.cpp +++ b/Kernel/Thread.cpp @@ -1,3 +1,4 @@ +#include <AK/ELF/ELFLoader.h> #include <AK/StringBuilder.h> #include <Kernel/FileSystem/FileDescription.h> #include <Kernel/Process.h> @@ -570,7 +571,12 @@ String Thread::backtrace(ProcessInspectionHandle&) const if (!symbol.address) break; if (!symbol.ksym) { - builder.appendf("%p\n", symbol.address); +#ifdef EXPENSIVE_USERSPACE_STACKS + if (!Scheduler::is_active() && process.elf_loader() && process.elf_loader()->has_symbols()) + builder.appendf("%p %s\n", symbol.address, process.elf_loader()->symbolicate(symbol.address).characters()); + else +#endif + builder.appendf("%p\n", symbol.address); continue; } unsigned offset = symbol.address - symbol.ksym->address; |