PKUOS - Pintos
Pintos source browser for PKU Operating System course
debug.c
Go to the documentation of this file.
1#include <debug.h>
2#include <stdarg.h>
3#include <stdbool.h>
4#include <stddef.h>
5#include <stdio.h>
6#include <string.h>
7
8/** Prints the call stack, that is, a list of addresses, one in
9 each of the functions we are nested within. gdb or addr2line
10 may be applied to kernel.o to translate these into file names,
11 line numbers, and function names. */
12void
14{
15 static bool explained;
16 void **frame;
17
18 printf ("Call stack: %p", __builtin_return_address (0));
19 for (frame = __builtin_frame_address (1);
20 (uintptr_t) frame >= 0x1000 && frame[0] != NULL;
21 frame = frame[0])
22 printf (" %p", frame[1]);
23 printf (".\n");
24
25 if (!explained)
26 {
27 explained = true;
28 printf ("The `backtrace' program can make call stacks useful.\n"
29 "Read \"Backtraces\" in the \"Debugging Tools\" chapter\n"
30 "of the Pintos documentation for more information.\n");
31 }
32}
void debug_backtrace(void)
Prints the call stack, that is, a list of addresses, one in each of the functions we are nested withi...
Definition: debug.c:13
int printf(const char *format,...)
Writes formatted output to the console.
Definition: stdio.c:79
#define NULL
Definition: stddef.h:4
uint32_t uintptr_t
Definition: stdint.h:36