CS318 - Pintos
Pintos source browser for JHU CS318 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. */
12 void
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 }
NULL
#define NULL
Definition: stddef.h:4
string.h
debug_backtrace
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
stdbool.h
stdarg.h
printf
int printf(const char *format,...)
Writes formatted output to the console.
Definition: stdio.c:79
stdio.h
uintptr_t
uint32_t uintptr_t
Definition: stdint.h:36
stddef.h
debug.h