- Timestamp:
- Jan 21, 2018, 12:10:09 AM (6 years ago)
- Location:
- EcnlProtoTool/trunk/mruby-1.3.0
- Files:
-
- 1 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/mruby-1.3.0/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c
r321 r331 9 9 #include <ctype.h> 10 10 11 #include "mruby.h"12 #include "mruby/dump.h"13 #include "mruby/debug.h"14 #include "mruby/class.h"15 #include "mruby/opcode.h"16 #include "mruby/variable.h"11 #include <mruby.h> 12 #include <mruby/dump.h> 13 #include <mruby/debug.h> 14 #include <mruby/class.h> 15 #include <mruby/opcode.h> 16 #include <mruby/variable.h> 17 17 18 18 #include "mrdb.h" … … 58 58 {"run", NULL, 1, 0, 0, DBGCMD_RUN, dbgcmd_run}, /* r[un] */ 59 59 {"step", NULL, 1, 0, 1, DBGCMD_STEP, dbgcmd_step}, /* s[tep] */ 60 {"next", NULL, 1, 0, 1, DBGCMD_NEXT, dbgcmd_next}, /* n[ext] */ 60 61 {NULL} 61 62 }; … … 406 407 407 408 ret = mrb_debug_get_break(mrb, mrdb->dbg, mrdb->dbg->stopped_bpno, &bp); 408 if (ret == 0) {409 if (ret == 0) { 409 410 switch(bp.type) { 410 411 case MRB_DEBUG_BPTYPE_LINE: … … 416 417 method_name = bp.point.methodpoint.method_name; 417 418 class_name = bp.point.methodpoint.class_name; 418 if (class_name == NULL) {419 if (class_name == NULL) { 419 420 printf("Breakpoint %d, %s\n", bp.bpno, method_name); 420 421 } … … 422 423 printf("Breakpoint %d, %s:%s\n", bp.bpno, class_name, method_name); 423 424 } 424 if (mrdb->dbg->isCfunc) {425 if (mrdb->dbg->isCfunc) { 425 426 printf("Stopped before calling the C function.\n"); 426 427 } … … 445 446 char* file = mrb_debug_get_source(mrb, mrdb, mrdb->srcpath, mrdb->dbg->prvfile); 446 447 uint16_t lineno = mrdb->dbg->prvline; 447 if (file != NULL) {448 if (file != NULL) { 448 449 mrb_debug_list(mrb, mrdb->dbg, file, lineno, lineno); 449 450 mrb_free(mrb, file); … … 531 532 break; 532 533 } 533 if (sym != 0) {534 if (sym != 0) { 534 535 dbg->method_bpno = mrb_debug_check_breakpoint_method(mrb, dbg, c, sym, &isCfunc); 535 if (isCfunc) {536 if (isCfunc) { 536 537 bpno = dbg->method_bpno; 537 538 dbg->method_bpno = 0; … … 557 558 dbg->regs = regs; 558 559 559 if (dbg->xphase == DBG_PHASE_RESTART) {560 if (dbg->xphase == DBG_PHASE_RESTART) { 560 561 dbg->root_irep = irep; 561 562 dbg->prvfile = NULL; 562 563 dbg->prvline = 0; 564 dbg->prvci = NULL; 563 565 dbg->xm = DBG_RUN; 564 566 dbg->xphase = DBG_PHASE_RUNNING; … … 570 572 switch (dbg->xm) { 571 573 case DBG_STEP: 572 case DBG_NEXT: // temporary573 574 if (!file || (dbg->prvfile == file && dbg->prvline == line)) { 574 575 return; … … 576 577 dbg->method_bpno = 0; 577 578 dbg->bm = BRK_STEP; 579 break; 580 581 case DBG_NEXT: 582 if (!file || (dbg->prvfile == file && dbg->prvline == line)) { 583 return; 584 } 585 if ((intptr_t)(dbg->prvci) < (intptr_t)(mrb->c->ci)) { 586 return; 587 } 588 dbg->prvci = NULL; 589 dbg->method_bpno = 0; 590 dbg->bm = BRK_NEXT; 578 591 break; 579 592 … … 611 624 dbg->prvline = line; 612 625 613 if (dbg->bm == BRK_BREAK && --dbg->ccnt > 0) {626 if (dbg->bm == BRK_BREAK && --dbg->ccnt > 0) { 614 627 return; 615 628 } … … 634 647 st = cmd->func(mrb, mrdb); 635 648 636 if ( (st == DBGST_CONTINUE) || (st == DBGST_RESTART)) break;649 if ((st == DBGST_CONTINUE) || (st == DBGST_RESTART)) break; 637 650 } 638 651 return dbg->xm; … … 671 684 mrdb->srcpath = args.srcpath; 672 685 673 if (mrdb->dbg->xm == DBG_QUIT) {686 if (mrdb->dbg->xm == DBG_QUIT) { 674 687 mrdb->dbg->xphase = DBG_PHASE_RESTART; 675 688 } … … 679 692 mrdb->dbg->xm = DBG_INIT; 680 693 mrdb->dbg->ccnt = 1; 681 694 682 695 /* setup hook functions */ 683 696 mrb->code_fetch_hook = mrb_code_fetch_hook; … … 726 739 } 727 740 } 728 741 729 742 mrdb->dbg->prvfile = "-"; 730 743 mrdb->dbg->prvline = 0; 731 744 732 745 while (1) { 733 746 cmd = get_and_parse_command(mrb, mrdb); 734 747 mrb_assert(cmd); 735 748 736 749 if (cmd->id == DBGCMD_QUIT) { 737 750 break; 738 751 } 739 740 if ( cmd->func(mrb, mrdb) == DBGST_RESTART ) goto l_restart;741 } 742 752 753 if ( cmd->func(mrb, mrdb) == DBGST_RESTART ) goto l_restart; 754 } 755 743 756 cleanup(mrb, &args); 744 757
Note:
See TracChangeset
for help on using the changeset viewer.