Diff for /freem/src/mdebug.c between versions 1.6 and 1.7

version 1.6, 2025/04/30 14:41:03 version 1.7, 2025/04/30 17:19:16
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.7  2025/04/30 17:19:16  snw
    *   Improve backtraces in debugger
    *
  *   Revision 1.6  2025/04/30 14:41:03  snw   *   Revision 1.6  2025/04/30 14:41:03  snw
  *   Further debugger work   *   Further debugger work
  *   *
Line 166  int debugger (int entry_mode, char *curc Line 169  int debugger (int entry_mode, char *curc
   
     while (1) {      while (1) {
                   
         //stcpy (rouname_buf, rou_name);          if (nstx == 0) {
         getraddress (rouname_buf, nstx);              stcpy (rouname_buf, rou_name);
           }
           else {
               char tbuf[256];
               
               getraddress (tbuf, nstx);
               stcpy (rouname_buf, &(tbuf[3]));
           }
         stcnv_m2c (rouname_buf);          stcnv_m2c (rouname_buf);
                   
         snprintf (dbg_prompt, sizeof (dbg_prompt) - 1, "%s $STACK=%d [DEBUG]> ", rouname_buf, nstx);          snprintf (dbg_prompt, sizeof (dbg_prompt) - 1, "%s $STACK=%d [DEBUG]> ", rouname_buf, nstx);
Line 207  int debugger (int entry_mode, char *curc Line 217  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[256];              char tmpbuf[256];
               char ecbuf[256];
             printf ("%-10s%s\n", "$STACK", "(CMND)ENTRY");              char lref[256];
             printf ("%-10s%s\n", "======", "===========");              char bt_mcode[256];
               
               printf ("%-10s%s\n", "$STACK", "ENTRY");
               printf ("%-10s%s\n", "======", "=====");
                           
                           
             for (i = 1; i <= nstx; i++) getraddress (callerr[i], i);              for (i = 1; i <= nstx; i++) getraddress (callerr[i], i);
             for (i = nstx; i > 0; i--) {              for (i = nstx; i > 0; i--) {
                   
                 stcpy (tmpbuf, callerr[i]);                  stcpy (tmpbuf, callerr[i]);
                 stcnv_m2c (tmpbuf);                  stcnv_m2c (tmpbuf);
                 printf ("%-10d%s\n", i, tmpbuf);                  
                   printf ("%-10d%s\n", i, &(tmpbuf[3]));
                   stcpy (lref, &(tmpbuf[3]));
                   stcnv_m2c (lref);
                   if (m_text (lref, bt_mcode) != NULL) {
                       stcnv_m2c (bt_mcode);
                       printf ("\t%s\n", bt_mcode);
                   }
             }              }
         }          }
         else {          else {

Removed from v.1.6  
changed lines
  Added in v.1.7


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