Changeset 6e5833 in git for Singular/mmbt.c
- Timestamp:
- Mar 19, 1999, 6:42:33 PM (25 years ago)
- Branches:
- (u'spielwiese', 'd1b01e9d51ade4b46b745d3bada5c5f3696be3a8')
- Children:
- 2efb0e4a1f16840557ae3ada88076edccb960534
- Parents:
- 105efeceef55c91a7f3c55acd25aac54cf6ae7ba
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/mmbt.c
r105efec r6e5833 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: mmbt.c,v 1. 7 1999-03-19 16:00:05 SingularExp $ */4 /* $Id: mmbt.c,v 1.8 1999-03-19 17:42:28 obachman Exp $ */ 5 5 /* 6 6 * ABSTRACT: backtrace: part of memory subsystem (for linux/elf) … … 101 101 j=fscanf(f,"%d %s\n",(int *)&p2n[i].p,n); 102 102 if (j!=2) break; 103 p2n[i].name=strdup(n); 104 i++; 103 if (strcmp(n, "___crt_dummy__") != 0 && strcmp(n, "_start") != 0) 104 { 105 p2n[i].name=strdup(n); 106 i++; 107 } 105 108 } 106 109 fclose(f); … … 112 115 char * mmP2cName(unsigned long p) 113 116 { 117 int i, e; 114 118 int a=0; 115 int e=mm_p2n_max;116 int i;117 119 if (mm_p2n_max == -1) 118 120 mmP2cNameInit(); 121 e=mm_p2n_max; 119 122 loop 120 123 { … … 148 151 } 149 152 150 void mmPrintStack(unsigned long * bt_stack) /* print stack */153 void mmPrintStack(unsigned long *stack, int all) 151 154 { 152 int i=0; 155 mmPrintStackFrames(stack, 0, BT_MAXSTACK, all); 156 } 157 158 void mmDBPrintStack(void* memblock, int all) 159 { 160 mmPrintStackFrames(((DBMCB*) memblock)->bt_stack, 0, BT_MAXSTACK, all); 161 } 162 163 void mmDBPrintStackFrames(void* memblock, int start, int end) 164 { 165 mmPrintStackFrames(((DBMCB*) memblock)->bt_stack, start, end, 166 MM_PRINT_ALL_STACK); 167 } 168 169 /* print stack */ 170 void mmPrintStackFrames(unsigned long *bt_stack, int start, int end, int mm) 171 { 172 int i=start; 153 173 PrintS(" "); 154 174 do 155 175 { 156 176 char *s; 157 fprintf( stderr,":%x",bt_stack[i]);158 177 s=mmP2cName(bt_stack[i]); 159 178 if (s!=NULL) 160 fprintf( stderr,"/%s",s); 179 { 180 if ((mm & MM_PRINT_ALL_STACK) || strncmp(s, "mm", 2) !=0) 181 fprintf( stderr,":%s",s); 182 if (strcmp(s, "main") == 0) break; 183 } 184 else 185 fprintf( stderr,":%x",bt_stack[i]); 161 186 i++; 162 } while ((i< BT_MAXSTACK) && (bt_stack[i]!=0));187 } while ((i<end) && (bt_stack[i]!=0)); 163 188 fprintf( stderr,"\n"); 164 189 }
Note: See TracChangeset
for help on using the changeset viewer.