Changeset 6e5833 in git for Singular/mmbt.c


Ignore:
Timestamp:
Mar 19, 1999, 6:42:33 PM (25 years ago)
Author:
Olaf Bachmann <obachman@…>
Branches:
(u'spielwiese', 'd1b01e9d51ade4b46b745d3bada5c5f3696be3a8')
Children:
2efb0e4a1f16840557ae3ada88076edccb960534
Parents:
105efeceef55c91a7f3c55acd25aac54cf6ae7ba
Message:
* some improvements to mmbt


git-svn-id: file:///usr/local/Singular/svn/trunk@2963 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/mmbt.c

    r105efec r6e5833  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: mmbt.c,v 1.7 1999-03-19 16:00:05 Singular Exp $ */
     4/* $Id: mmbt.c,v 1.8 1999-03-19 17:42:28 obachman Exp $ */
    55/*
    66* ABSTRACT: backtrace: part of memory subsystem (for linux/elf)
     
    101101    j=fscanf(f,"%d %s\n",(int *)&p2n[i].p,n);
    102102    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    }
    105108  }
    106109  fclose(f);
     
    112115char * mmP2cName(unsigned long p)
    113116{
     117  int i, e;
    114118  int a=0;
    115   int e=mm_p2n_max;
    116   int i;
    117119  if (mm_p2n_max == -1)
    118120    mmP2cNameInit();
     121  e=mm_p2n_max;
    119122  loop
    120123  {
     
    148151}
    149152
    150 void mmPrintStack(unsigned long *bt_stack) /* print stack */
     153void mmPrintStack(unsigned long *stack, int all)
    151154{
    152   int i=0;
     155  mmPrintStackFrames(stack, 0, BT_MAXSTACK, all);
     156}
     157
     158void mmDBPrintStack(void* memblock, int all)
     159{
     160  mmPrintStackFrames(((DBMCB*) memblock)->bt_stack, 0, BT_MAXSTACK, all);
     161}
     162
     163void 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 */
     170void mmPrintStackFrames(unsigned long *bt_stack, int start, int end, int mm)
     171{
     172  int i=start;
    153173  PrintS(" ");
    154174  do
    155175  {
    156176    char *s;
    157     fprintf( stderr,":%x",bt_stack[i]);
    158177    s=mmP2cName(bt_stack[i]);
    159178    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]);
    161186    i++;
    162   } while ((i<BT_MAXSTACK) && (bt_stack[i]!=0));
     187  } while ((i<end) && (bt_stack[i]!=0));
    163188  fprintf( stderr,"\n");
    164189}
Note: See TracChangeset for help on using the changeset viewer.