From be5fded5d4f686aff22c330a8c0ef1f4bf77b3ac Mon Sep 17 00:00:00 2001 From: D_B Date: Tue, 22 Mar 2022 18:07:55 +0800 Subject: [PATCH] lab1 monitor mon_backtrace --- lab/kern/monitor.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/lab/kern/monitor.c b/lab/kern/monitor.c index 4e00796..a8d5617 100644 --- a/lab/kern/monitor.c +++ b/lab/kern/monitor.c @@ -59,6 +59,24 @@ int mon_backtrace(int argc, char **argv, struct Trapframe *tf) { // Your code here. + int +mon_backtrace(int argc, char **argv, struct Trapframe *tf) +{ + + uint32_t *ebp; + ebp = (uint32_t *)read_ebp(); + cprintf("Stack backtrace:\n"); + while(ebp!=0){ + cprintf(" ebp %08x",ebp); + cprintf(" eip %08x args",*(ebp+1)); + cprintf(" args"); + cprintf(" %08x", *(ebp+2)); + cprintf(" %08x", *(ebp+3)); + cprintf(" %08x", *(ebp+4)); + cprintf(" %08x", *(ebp+5)); + cprintf(" %08x\n", *(ebp+6)); + } + return 0; }