Diff for /freem/src/mdebug.c between versions 1.11 and 1.12

version 1.11, 2025/05/01 17:02:30 version 1.12, 2025/05/01 21:02:31
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.12  2025/05/01 21:02:31  snw
    *   Documentation updates
    *
  *   Revision 1.11  2025/05/01 17:02:30  snw   *   Revision 1.11  2025/05/01 17:02:30  snw
  *   Further debugging improvements   *   Further debugging improvements
  *   *
Line 206  int debugger (int entry_mode, char *entr Line 209  int debugger (int entry_mode, char *entr
         }          }
                   
         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);
           if (dbg_enable_watch && dbg_pending_watches) dbg_dump_watchlist ();
         dbg_buf = readline (dbg_prompt);          dbg_buf = readline (dbg_prompt);
                   
         if (!dbg_buf) continue;          if (!dbg_buf) continue;
Line 347  int debugger (int entry_mode, char *entr Line 350  int debugger (int entry_mode, char *entr
             printf ("ZTRAP:\t%s\n", ecbuf);              printf ("ZTRAP:\t%s\n", ecbuf);
                           
         }          }
           else if ((strcmp (dbg_cmd, "halt") == 0) || (strcmp (dbg_cmd, "h") == 0)) {
               printf ("debug:  forcing halt\n");          
               exit (0);
           }
           else if ((strcmp (dbg_cmd, "watch") == 0) || (strcmp (dbg_cmd, "w") == 0)) {
               char watchmode;
               char *glvn;
               
               if (dbg_argc == 1) {
                   switch (dbg_enable_watch) {
                       case 0:
                           dbg_enable_watch = 1;
                           printf ("debug:  watchpoints enabled\n");
                           break;
                       case 1:
                           dbg_enable_watch = 0;
                           printf ("debug:  watchpoints disabled\n");
                           break;
                   }
               }
               else {
                   watchmode = dbarg[0];
                   glvn = &(dbarg[1]);
                   
                   switch (watchmode) {
                       case '+':
                           dbg_add_watch (glvn);
                           break;
                       case '-':
                           dbg_remove_watch (glvn);
                           break;
                       case '?':
                           dbg_dump_watch (glvn);
                           break;
                       default:
                           printf ("debug:  watch mode must be +, -, or ?\n");
                           break;
                   }
   
                   set_io (UNIX);
               }               
           }
         else {          else {
             printf ("DEBUG:  invalid command\r\n");              printf ("DEBUG:  invalid command\r\n");
         }          }
Line 390  dbg_watch *dbg_add_watch (char *varnam) Line 435  dbg_watch *dbg_add_watch (char *varnam)
         return NULL;          return NULL;
     }      }
   
     if ((dbg_watchlist[index].varnam = (char *) malloc (256 * sizeof (char))) == NULL) {      if ((dbg_watchlist[index].varnam = (char *) calloc (256, sizeof (char))) == NULL) {
         set_io (UNIX);          set_io (UNIX);
         fprintf (stderr, "Could not allocate memory for the new watchlist entry.\n");          fprintf (stderr, "Could not allocate memory for the new watchlist entry.\n");
         set_io (MUMPS);          set_io (MUMPS);
Line 402  dbg_watch *dbg_add_watch (char *varnam) Line 447  dbg_watch *dbg_add_watch (char *varnam)
     dbg_watchlist[index].chgct = 0;      dbg_watchlist[index].chgct = 0;
   
     set_io (UNIX);      set_io (UNIX);
     fprintf (stderr, "Added '%s' to the watchlist.\n", dbg_get_watch_name (varnam));      fprintf (stderr, "Added '%s' to the watchlist.\n", varnam);
     set_io (MUMPS);      set_io (MUMPS);
   
     return NULL;      return NULL;

Removed from v.1.11  
changed lines
  Added in v.1.12


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