--- freem/src/mdebug.c 2025/04/30 14:41:03 1.6 +++ freem/src/mdebug.c 2025/04/30 20:03:09 1.8 @@ -1,5 +1,5 @@ /* - * $Id: mdebug.c,v 1.6 2025/04/30 14:41:03 snw Exp $ + * $Id: mdebug.c,v 1.8 2025/04/30 20:03:09 snw Exp $ * debugger enhancements * * @@ -24,6 +24,12 @@ * along with FreeM. If not, see . * * $Log: mdebug.c,v $ + * Revision 1.8 2025/04/30 20:03:09 snw + * Work on entryref parser + * + * Revision 1.7 2025/04/30 17:19:16 snw + * Improve backtraces in debugger + * * Revision 1.6 2025/04/30 14:41:03 snw * Further debugger work * @@ -166,8 +172,15 @@ int debugger (int entry_mode, char *curc while (1) { - //stcpy (rouname_buf, rou_name); - getraddress (rouname_buf, nstx); + if (nstx == 0) { + stcpy (rouname_buf, rou_name); + } + else { + char tbuf[256]; + + getraddress (tbuf, nstx); + stcpy (rouname_buf, &(tbuf[3])); + } stcnv_m2c (rouname_buf); snprintf (dbg_prompt, sizeof (dbg_prompt) - 1, "%s $STACK=%d [DEBUG]> ", rouname_buf, nstx); @@ -207,16 +220,27 @@ int debugger (int entry_mode, char *curc } else if ((strcmp (dbg_cmd, "backtrace") == 0) || (strcmp (dbg_cmd, "bt") == 0)) { char tmpbuf[256]; - - printf ("%-10s%s\n", "$STACK", "(CMND)ENTRY"); - printf ("%-10s%s\n", "======", "==========="); + char ecbuf[256]; + char lref[256]; + 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 = nstx; i > 0; i--) { + stcpy (tmpbuf, callerr[i]); stcnv_m2c (tmpbuf); - printf ("%-10d%s\n", i, tmpbuf); + + printf ("%-10d%s\n", i, &(tmpbuf[3])); + stcpy (lref, &(tmpbuf[3])); + stcnv_m2c (lref); + if (routine_get_line (lref, bt_mcode) != NULL) { + stcnv_m2c (bt_mcode); + printf ("\t%s\n", bt_mcode); + } } } else {