Arbitrary kernel context backtracing
authorBarret Rhoden <brho@cs.berkeley.edu>
Sun, 4 Aug 2013 18:57:48 +0000 (11:57 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Sun, 4 Aug 2013 19:21:27 +0000 (12:21 -0700)
commitfa2c9d20d2a9bafe0fc912f367cf3315a403b0aa
tree01912d10a3a30caaecd00984b49cb5ffa92612ac
parent54adb7fd9b73436abc11998ca33a17528db76794
Arbitrary kernel context backtracing

We can backtrace any context compiled with frame pointers, given the
program counter and frame pointer.

The existing monitor command 'backtrace' will still backtrace the
calling context, when given no arguments.  Additionally, it will
backtrace any frame, given the PC and FP.

Kernel page faults on x86 will backtrace the faulting context.  Riscv
still needs an implementation of backtrace_frame().

backtrace_frame() will sort of work for userspace too, though the kernel
won't know the names of functions, and you need to compile all of
userspace with -fno-omit-frame-pointer (which we don't do by default).
kern/arch/riscv/kdebug.c
kern/arch/x86/kdebug.c
kern/arch/x86/trap.c
kern/arch/x86/trap.h
kern/arch/x86/trap32.c
kern/arch/x86/trap32.h
kern/arch/x86/trap64.c
kern/arch/x86/trap64.h
kern/include/kdebug.h
kern/src/monitor.c