Diff for /freem/src/mdebug.c between versions 1.9 and 1.10

version 1.9, 2025/05/01 03:56:29 version 1.10, 2025/05/01 04:45:15
Line 24 Line 24
  *   along with FreeM.  If not, see <https://www.gnu.org/licenses/>.   *   along with FreeM.  If not, see <https://www.gnu.org/licenses/>.
  *   *
  *   $Log$   *   $Log$
    *   Revision 1.10  2025/05/01 04:45:15  snw
    *   Improve backtraces
    *
  *   Revision 1.9  2025/05/01 03:56:29  snw   *   Revision 1.9  2025/05/01 03:56:29  snw
  *   -m   *   -m
  *   *
Line 127  int debugger (int entry_mode, char *curc Line 130  int debugger (int entry_mode, char *curc
     char *dbg_cmd;      char *dbg_cmd;
     int do_prompt = FALSE;      int do_prompt = FALSE;
     register int i;      register int i;
       register int j;
           
     set_io (UNIX);      set_io (UNIX);
           
Line 224  int debugger (int entry_mode, char *curc Line 228  int debugger (int entry_mode, char *curc
         else if ((strcmp (dbg_cmd, "backtrace") == 0) || (strcmp (dbg_cmd, "bt") == 0)) {          else if ((strcmp (dbg_cmd, "backtrace") == 0) || (strcmp (dbg_cmd, "bt") == 0)) {
             char tmpbuf[1024];              char tmpbuf[1024];
             char ecbuf[256];              char ecbuf[256];
               char m_cmd[10];
             char lref[1024];              char lref[1024];
             char bt_mcode[1024];              char bt_mcode[1024];
                           
             printf ("%-10s%s\n", "$STACK", "ENTRY");              printf ("%-10s%-10s%s\n", "$STACK", "COMMAND", "PLACE");
             printf ("%-10s%s\n", "======", "=====");              printf ("%-10s%-10s%s\n", "======", "=======", "=====");
                           
                           
             for (i = 1; i <= nstx; i++) getraddress (callerr[i], i);              for (i = 1; i <= nstx; i++) getraddress (callerr[i], i);
Line 236  int debugger (int entry_mode, char *curc Line 241  int debugger (int entry_mode, char *curc
                                   
                 stcpy (tmpbuf, callerr[i]);                  stcpy (tmpbuf, callerr[i]);
                 stcnv_m2c (tmpbuf);                  stcnv_m2c (tmpbuf);
                   strcpy (ecbuf, &(tmpbuf[1]));
   
                   for (j = 0; j < strlen (ecbuf); j++) {
                       if (ecbuf[j] == ')') {
                           ecbuf[j] = '\0';
                           break;
                       }
                   }
   
                   switch (ecbuf[0]) {
                       case 'F':
                           sprintf (m_cmd, "FOR");
                           break;
                       case 'D':
                           sprintf (m_cmd, "DO");
                           break;
                   }
                               
                                   
                 printf ("%-10d%s\n", i, &(tmpbuf[3]));                  printf ("%-10d%-10s%s\n", i, m_cmd, &(tmpbuf[3]));
                 stcpy (lref, &(tmpbuf[3]));                  stcpy (lref, &(tmpbuf[3]));
                 stcnv_m2c (lref);                  stcnv_m2c (lref);
                 if (routine_get_line (lref, bt_mcode) != NULL) {                  if (routine_get_line (lref, bt_mcode) != NULL) {
                     stcnv_m2c (bt_mcode);                      stcnv_m2c (bt_mcode);
                     printf ("%-10s%s\n", " ", bt_mcode);                      printf ("%-20s%s\n", " ", bt_mcode);
                 }                  }
             }              }
               stcpy (ecbuf, etrap);
               stcnv_m2c (ecbuf);
               printf ("ETRAP:\t%s\n", ecbuf);
               stcpy (ecbuf, ztrap[nstx]);
               stcnv_m2c (ecbuf);
               printf ("ZTRAP:\t%s\n", ecbuf);
               
         }          }
         else {          else {
             printf ("DEBUG:  invalid command\r\n");              printf ("DEBUG:  invalid command\r\n");

Removed from v.1.9  
changed lines
  Added in v.1.10


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>