Make debug.h non-idempotent, like <assert.h>.
[pintos-anon] / src / lib / debug.c
index 577ab67f06c39f60f8fd606d157b6a8a564916bd..fafbc8c1acc69de41a5dfb4104f910c2365f4c84 100644 (file)
@@ -15,5 +15,20 @@ panic (const char *format, ...)
   printk ("\n");
   va_end (args);
 
+  backtrace ();
+
   for (;;);
 }
+
+void
+backtrace (void) 
+{
+  void **frame;
+  
+  printk ("Call stack:");
+  for (frame = __builtin_frame_address (0);
+       frame != NULL && frame[0] != NULL;
+       frame = frame[0]) 
+    printk (" %p", frame[1]);
+  printk (".\n");
+}