blob: c273c3940b3f9ac2a02802cc4ddd8b6506061216 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#include <kernel/arch/generic.h>
void *debug_caller(size_t depth) {
void **rbp;
asm("mov %%rbp, %0"
: "=r" (rbp));
while (depth--) {
if (!rbp) return NULL;
rbp = *rbp;
}
return rbp[1];
}
void debug_stacktrace(void) {
for (size_t i = 0; i < 16; i++) {
void *ptr = debug_caller(i);
if (!ptr) break;
kprintf(" k/%08x", (uintptr_t)ptr);
}
kprintf("\n");
}
|