1 /* 2 stacktrace.c 3 4 Created: Jan 19, 1993 by Philip Homburg 5 6 Copyright 1995 Philip Homburg 7 */ 8 9 #include <stdio.h> 10 #include <string.h> 11 #include <minix/sysutil.h> 12 13 typedef unsigned int reg_t; 14 15 extern reg_t get_bp(void); 16 util_stacktrace(void)17void util_stacktrace(void) 18 { 19 #if USE_SYSDEBUG 20 reg_t bp, pc, hbp; 21 22 bp= get_bp(); 23 while(bp) 24 { 25 pc= ((reg_t *)bp)[1]; 26 hbp= ((reg_t *)bp)[0]; 27 printf("0x%lx ", (unsigned long) pc); 28 if (hbp != 0 && hbp <= bp) 29 { 30 printf("0x%lx ", (unsigned long) -1); 31 break; 32 } 33 bp= hbp; 34 } 35 printf("\n"); 36 #endif /* USE_SYSDEBUG */ 37 } 38 39