- Timestamp:
- Jul 9, 2020, 8:51:43 AM (4 years ago)
- Location:
- EcnlProtoTool/trunk/mruby-2.1.1
- Files:
-
- 11 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-bin-debugger/tools/mrdb/apibreak.c
r331 r439 85 85 86 86 static uint16_t 87 check_file_lineno( struct mrb_irep *irep, const char *file, uint16_t lineno)87 check_file_lineno(mrb_state *mrb, struct mrb_irep *irep, const char *file, uint16_t lineno) 88 88 { 89 89 mrb_irep_debug_info_file *info_file; … … 94 94 95 95 for (f_idx = 0; f_idx < irep->debug_info->flen; ++f_idx) { 96 const char *filename; 96 97 info_file = irep->debug_info->files[f_idx]; 97 if (!strcmp(info_file->filename, file)) { 98 filename = mrb_sym_name_len(mrb, info_file->filename_sym, NULL); 99 if (!strcmp(filename, file)) { 98 100 result = MRB_DEBUG_BP_FILE_OK; 99 101 … … 104 106 } 105 107 for (i=0; i < irep->rlen; ++i) { 106 result |= check_file_lineno( irep->reps[i], file, lineno);108 result |= check_file_lineno(mrb, irep->reps[i], file, lineno); 107 109 if (result == (MRB_DEBUG_BP_FILE_OK | MRB_DEBUG_BP_LINENO_OK)) { 108 110 return result; … … 113 115 } 114 116 115 static const char*116 get_class_name(mrb_state *mrb, struct RClass *class_obj)117 {118 struct RClass *outer;119 mrb_sym class_sym;120 121 outer = mrb_class_outer_module(mrb, class_obj);122 class_sym = mrb_class_sym(mrb, class_obj, outer);123 return mrb_sym2name(mrb, class_sym);124 }125 126 117 static int32_t 127 118 compare_break_method(mrb_state *mrb, mrb_debug_breakpoint *bp, struct RClass *class_obj, mrb_sym method_sym, mrb_bool* isCfunc) … … 129 120 const char* class_name; 130 121 const char* method_name; 131 struct RProc*m;122 mrb_method_t m; 132 123 struct RClass* sc; 133 124 const char* sn; … … 136 127 mrb_bool is_defined; 137 128 138 method_name = mrb_sym 2name(mrb, method_sym);129 method_name = mrb_sym_name(mrb, method_sym); 139 130 140 131 method_p = &bp->point.methodpoint; 141 132 if (strcmp(method_p->method_name, method_name) == 0) { 142 class_name = get_class_name(mrb, class_obj);133 class_name = mrb_class_name(mrb, class_obj); 143 134 if (class_name == NULL) { 144 135 if (method_p->class_name == NULL) { … … 148 139 else if (method_p->class_name != NULL) { 149 140 m = mrb_method_search_vm(mrb, &class_obj, method_sym); 150 if ( m == NULL) {141 if (MRB_METHOD_UNDEF_P(m)) { 151 142 return MRB_DEBUG_OK; 152 143 } 153 if (MRB_ PROC_CFUNC_P(m)) {144 if (MRB_METHOD_CFUNC_P(m)) { 154 145 *isCfunc = TRUE; 155 146 } … … 163 154 ssym = mrb_symbol(mrb_check_intern_cstr(mrb, method_p->method_name)); 164 155 m = mrb_method_search_vm(mrb, &sc, ssym); 165 if ( m == NULL) {156 if (MRB_METHOD_UNDEF_P(m)) { 166 157 return MRB_DEBUG_OK; 167 158 } 168 159 169 class_name = get_class_name(mrb, class_obj);170 sn = get_class_name(mrb, sc);160 class_name = mrb_class_name(mrb, class_obj); 161 sn = mrb_class_name(mrb, sc); 171 162 if (strcmp(sn, class_name) == 0) { 172 163 return bp->bpno; … … 197 188 198 189 /* file and lineno check (line type mrb_debug_line_ary only.) */ 199 result = check_file_lineno( dbg->root_irep, file, lineno);190 result = check_file_lineno(mrb, dbg->root_irep, file, lineno); 200 191 if (result == 0) { 201 192 return MRB_DEBUG_BREAK_INVALID_FILE; … … 205 196 } 206 197 207 set_file = mrb_malloc(mrb, strlen(file) + 1);198 set_file = (char*)mrb_malloc(mrb, strlen(file) + 1); 208 199 209 200 index = dbg->bpnum; … … 242 233 243 234 if (class_name != NULL) { 244 set_class = mrb_malloc(mrb, strlen(class_name) + 1);235 set_class = (char*)mrb_malloc(mrb, strlen(class_name) + 1); 245 236 strncpy(set_class, class_name, strlen(class_name) + 1); 246 237 } … … 249 240 } 250 241 251 set_method = mrb_malloc(mrb, strlen(method_name) + 1);242 set_method = (char*)mrb_malloc(mrb, strlen(method_name) + 1); 252 243 253 244 strncpy(set_method, method_name, strlen(method_name) + 1); … … 438 429 439 430 static mrb_bool 440 check_start_pc_for_line(mrb_ irep *irep,mrb_code *pc, uint16_t line)431 check_start_pc_for_line(mrb_state *mrb, mrb_irep *irep, const mrb_code *pc, uint16_t line) 441 432 { 442 433 if (pc > irep->iseq) { 443 if (line == mrb_debug_get_line( irep, (uint32_t)(pc - irep->iseq - 1))) {434 if (line == mrb_debug_get_line(mrb, irep, pc - irep->iseq - 1)) { 444 435 return FALSE; 445 436 } … … 459 450 } 460 451 461 if (!check_start_pc_for_line( dbg->irep, dbg->pc, line)) {452 if (!check_start_pc_for_line(mrb, dbg->irep, dbg->pc, line)) { 462 453 return MRB_DEBUG_OK; 463 454 } … … 515 506 return 0; 516 507 } 517 518 -
EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-bin-debugger/tools/mrdb/apilist.c
r331 r439 49 49 } 50 50 51 path = mrb_malloc(mrb, len);51 path = (char*)mrb_malloc(mrb, len); 52 52 memset(path, 0, len); 53 53 … … 65 65 { 66 66 size_t len; 67 char *p, *dir; 67 const char *p; 68 char *dir; 68 69 69 70 if (path == NULL) { … … 74 75 len = p != NULL ? (size_t)(p - path) : strlen(path); 75 76 76 dir = mrb_malloc(mrb, len + 1);77 dir = (char*)mrb_malloc(mrb, len + 1); 77 78 strncpy(dir, path, len); 78 79 dir[len] = '\0'; … … 84 85 source_file_new(mrb_state *mrb, mrb_debug_context *dbg, char *filename) 85 86 { 86 source_file *file = NULL;87 88 file = mrb_malloc(mrb, sizeof(source_file));87 source_file *file; 88 89 file = (source_file*)mrb_malloc(mrb, sizeof(source_file)); 89 90 90 91 memset(file, '\0', sizeof(source_file)); … … 97 98 98 99 file->lineno = 1; 99 file->path = mrb_malloc(mrb, strlen(filename) + 1);100 file->path = (char*)mrb_malloc(mrb, strlen(filename) + 1); 100 101 strcpy(file->path, filename); 101 102 return file; … … 175 176 const char *search_path[3]; 176 177 char *path = NULL; 178 const char *srcname = strrchr(filename, '/'); 179 180 if (srcname) srcname++; 181 else srcname = filename; 177 182 178 183 search_path[0] = srcpath; 179 search_path[1] = dirname(mrb, mrb_debug_get_filename(mr db->dbg->root_irep, 0));184 search_path[1] = dirname(mrb, mrb_debug_get_filename(mrb, mrdb->dbg->irep, 0)); 180 185 search_path[2] = "."; 181 186 … … 185 190 } 186 191 187 if ((path = build_path(mrb, search_path[i], filename)) == NULL) {192 if ((path = build_path(mrb, search_path[i], srcname)) == NULL) { 188 193 continue; 189 194 } -
EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c
r331 r439 22 22 c->no_exec = TRUE; 23 23 c->capture_errors = TRUE; 24 c->filename = (char*)dbg->prvfile;24 mrbc_filename(mrb, c, (const char*)dbg->prvfile); 25 25 c->lineno = dbg->prvline; 26 26 … … 32 32 33 33 mrb_value 34 mrb_debug_eval(mrb_state *mrb, mrb_debug_context *dbg, const char *expr, size_t len, mrb_bool *exc )34 mrb_debug_eval(mrb_state *mrb, mrb_debug_context *dbg, const char *expr, size_t len, mrb_bool *exc, int direct_eval) 35 35 { 36 void (*tmp)(struct mrb_state *, struct mrb_irep *, mrb_code *, mrb_value *);36 void (*tmp)(struct mrb_state *, struct mrb_irep *, const mrb_code *, mrb_value *); 37 37 mrb_value ruby_code; 38 38 mrb_value s; … … 48 48 v = mrb_obj_value(mrb->exc); 49 49 mrb->exc = 0; 50 } 51 else if (direct_eval) { 52 recv = dbg->regs[0]; 53 54 v = mrb_funcall(mrb, recv, expr, 0); 50 55 } 51 56 else { … … 70 75 } 71 76 72 s = mrb_ funcall(mrb, v, "inspect", 0);77 s = mrb_inspect(mrb, v); 73 78 74 79 /* enable code_fetch_hook */ -
EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.h
r331 r439 9 9 #include "mrdb.h" 10 10 11 mrb_value mrb_debug_eval(mrb_state*, mrb_debug_context*, const char*, size_t, mrb_bool* );11 mrb_value mrb_debug_eval(mrb_state*, mrb_debug_context*, const char*, size_t, mrb_bool*, int); 12 12 13 13 #endif /* APIPRINT_H_ */ -
EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-bin-debugger/tools/mrdb/cmdbreak.c
r331 r439 243 243 244 244 mrb_debug_bptype 245 parse_breakcommand(mr db_state *mrdb, const char **file, uint32_t *line, char **cname, char **method)245 parse_breakcommand(mrb_state *mrb, mrdb_state *mrdb, const char **file, uint32_t *line, char **cname, char **method) 246 246 { 247 247 mrb_debug_context *dbg = mrdb->dbg; … … 275 275 if (l <= 65535) { 276 276 *line = l; 277 *file = (body == args)? mrb_debug_get_filename( dbg->irep, (uint32_t)(dbg->pc - dbg->irep->iseq)): args;277 *file = (body == args)? mrb_debug_get_filename(mrb, dbg->irep, dbg->pc - dbg->irep->iseq): args; 278 278 } 279 279 else { … … 333 333 int32_t ret; 334 334 335 type = parse_breakcommand(mr db, &file, &line, &cname, &method);335 type = parse_breakcommand(mrb, mrdb, &file, &line, &cname, &method); 336 336 switch (type) { 337 337 case MRB_DEBUG_BPTYPE_LINE: -
EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-bin-debugger/tools/mrdb/cmdmisc.c
r331 r439 81 81 "Status of specified breakpoints (all user-settable breakpoints if no argument).\n" 82 82 "Arguments are breakpoint numbers with spaces in between.\n" 83 }, 84 { 85 "i[nfo]", "l[ocals]", "Print name of local variables", 86 "Usage: info locals\n" 87 "\n" 88 "Print name of local variables.\n" 83 89 }, 84 90 { … … 134 140 listcmd_parser_state_new(mrb_state *mrb) 135 141 { 136 listcmd_parser_state *st = mrb_malloc(mrb, sizeof(listcmd_parser_state));142 listcmd_parser_state *st = (listcmd_parser_state*)mrb_malloc(mrb, sizeof(listcmd_parser_state)); 137 143 memset(st, 0, sizeof(listcmd_parser_state)); 138 144 return st; … … 228 234 229 235 if (len > 0) { 230 st->filename = mrb_malloc(mrb, len + 1);236 st->filename = (char*)mrb_malloc(mrb, len + 1); 231 237 strncpy(st->filename, *sp, len); 232 238 st->filename[len] = '\0'; … … 243 249 { 244 250 size_t len; 245 char *p, *s; 251 const char *p; 252 char *s; 246 253 247 254 if (filename == NULL) { … … 256 263 } 257 264 258 s = mrb_malloc(mrb, len + strlen(ext) + 1);265 s = (char*)mrb_malloc(mrb, len + strlen(ext) + 1); 259 266 memset(s, '\0', len + strlen(ext) + 1); 260 267 strncpy(s, filename, len); … … 326 333 check_cmd_pattern(const char *pattern, const char *cmd) 327 334 { 328 c har *lbracket, *rbracket, *p, *q;335 const char *lbracket, *rbracket, *p, *q; 329 336 330 337 if (pattern == NULL && cmd == NULL) { … … 495 502 if (mrdb->dbg->xm == DBG_QUIT) { 496 503 struct RClass *exc; 497 exc = mrb_define_class(mrb, "DebuggerExit", mrb _class_get(mrb, "Exception"));504 exc = mrb_define_class(mrb, "DebuggerExit", mrb->eException_class); 498 505 mrb_raise(mrb, exc, "Exit mrdb."); 499 506 } -
EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-bin-debugger/tools/mrdb/cmdprint.c
r331 r439 19 19 mrb_value expr; 20 20 mrb_value result; 21 mrb_value s;22 21 uint8_t wcnt; 23 22 int ai; … … 37 36 } 38 37 39 result = mrb_debug_eval(mrb, mrdb->dbg, RSTRING_PTR(expr), RSTRING_LEN(expr), NULL );38 result = mrb_debug_eval(mrb, mrdb->dbg, RSTRING_PTR(expr), RSTRING_LEN(expr), NULL, 0); 40 39 41 40 /* $print_no = result */ 42 s = mrb_str_cat_lit(mrb, result, "\0"); 43 printf("$%lu = %s\n", (unsigned long)mrdb->print_no++, RSTRING_PTR(s)); 41 printf("$%lu = ", (unsigned long)mrdb->print_no++); 42 fwrite(RSTRING_PTR(result), RSTRING_LEN(result), 1, stdout); 43 putc('\n', stdout); 44 44 45 45 if (mrdb->print_no == 0) { … … 57 57 return dbgcmd_print(mrb, mrdb); 58 58 } 59 60 dbgcmd_state 61 dbgcmd_info_local(mrb_state *mrb, mrdb_state *mrdb) 62 { 63 mrb_value result; 64 mrb_value s; 65 int ai; 66 67 ai = mrb_gc_arena_save(mrb); 68 69 result = mrb_debug_eval(mrb, mrdb->dbg, "local_variables", 0, NULL, 1); 70 71 s = mrb_str_cat_lit(mrb, result, "\0"); 72 printf("$%lu = %s\n", (unsigned long)mrdb->print_no++, RSTRING_PTR(s)); 73 74 if (mrdb->print_no == 0) { 75 mrdb->print_no = 1; 76 } 77 78 mrb_gc_arena_restore(mrb, ai); 79 80 return DBGST_PROMPT; 81 } -
EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-bin-debugger/tools/mrdb/cmdrun.c
r331 r439 20 20 struct RClass *exc; 21 21 puts("Start it from the beginning."); 22 exc = mrb_define_class(mrb, "DebuggerRestart", mrb _class_get(mrb, "Exception"));22 exc = mrb_define_class(mrb, "DebuggerRestart", mrb->eException_class); 23 23 mrb_raise(mrb, exc, "Restart mrdb."); 24 24 } -
EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c
r331 r439 6 6 #include <stdlib.h> 7 7 #include <string.h> 8 #include <stdio.h>9 8 #include <ctype.h> 10 9 … … 53 52 {"help", NULL, 1, 0, 1, DBGCMD_HELP, dbgcmd_help}, /* h[elp] */ 54 53 {"info", "breakpoints", 1, 1, 1, DBGCMD_INFO_BREAK, dbgcmd_info_break}, /* i[nfo] b[reakpoints] */ 54 {"info", "locals", 1, 1, 0, DBGCMD_INFO_LOCAL, dbgcmd_info_local}, /* i[nfo] l[ocals] */ 55 55 {"list", NULL, 1, 0, 1, DBGCMD_LIST, dbgcmd_list}, /* l[ist] */ 56 56 {"print", NULL, 1, 0, 0, DBGCMD_PRINT, dbgcmd_print}, /* p[rint] */ … … 185 185 mrb_debug_context_new(mrb_state *mrb) 186 186 { 187 mrb_debug_context *dbg = mrb_malloc(mrb, sizeof(mrb_debug_context));187 mrb_debug_context *dbg = (mrb_debug_context*)mrb_malloc(mrb, sizeof(mrb_debug_context)); 188 188 189 189 memset(dbg, 0, sizeof(mrb_debug_context)); … … 224 224 mrdb_state_new(mrb_state *mrb) 225 225 { 226 mrdb_state *mrdb = mrb_malloc(mrb, sizeof(mrdb_state));226 mrdb_state *mrdb = (mrdb_state*)mrb_malloc(mrb, sizeof(mrdb_state)); 227 227 228 228 memset(mrdb, 0, sizeof(mrdb_state)); 229 229 230 230 mrdb->dbg = mrb_debug_context_get(mrb); 231 mrdb->command = mrb_malloc(mrb, MAX_COMMAND_LINE+1);231 mrdb->command = (char*)mrb_malloc(mrb, MAX_COMMAND_LINE+1); 232 232 mrdb->print_no = 1; 233 233 … … 505 505 506 506 static int32_t 507 check_method_breakpoint(mrb_state *mrb, mrb_irep *irep, mrb_code *pc, mrb_value *regs)507 check_method_breakpoint(mrb_state *mrb, mrb_irep *irep, const mrb_code *pc, mrb_value *regs) 508 508 { 509 509 struct RClass* c; … … 511 511 int32_t bpno; 512 512 mrb_bool isCfunc; 513 struct mrb_insn_data insn; 513 514 514 515 mrb_debug_context *dbg = mrb_debug_context_get(mrb); … … 518 519 dbg->method_bpno = 0; 519 520 520 switch(GET_OPCODE(*pc)) { 521 insn = mrb_decode_insn(pc); 522 switch(insn.insn) { 521 523 case OP_SEND: 522 524 case OP_SENDB: 523 c = mrb_class(mrb, regs[ GETARG_A(*pc)]);524 sym = irep->syms[ GETARG_B(*pc)];525 c = mrb_class(mrb, regs[insn.a]); 526 sym = irep->syms[insn.b]; 525 527 break; 526 528 case OP_SUPER: … … 544 546 545 547 static void 546 mrb_code_fetch_hook(mrb_state *mrb, mrb_irep *irep, mrb_code *pc, mrb_value *regs)548 mrb_code_fetch_hook(mrb_state *mrb, mrb_irep *irep, const mrb_code *pc, mrb_value *regs) 547 549 { 548 550 const char *file; … … 567 569 } 568 570 569 file = mrb_debug_get_filename( irep, (uint32_t)(pc - irep->iseq));570 line = mrb_debug_get_line( irep, (uint32_t)(pc - irep->iseq));571 file = mrb_debug_get_filename(mrb, irep, pc - irep->iseq); 572 line = mrb_debug_get_line(mrb, irep, pc - irep->iseq); 571 573 572 574 switch (dbg->xm) { -
EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.h
r331 r439 24 24 DBGCMD_BREAK, 25 25 DBGCMD_INFO_BREAK, 26 DBGCMD_INFO_LOCAL, 26 27 DBGCMD_WATCH, 27 28 DBGCMD_INFO_WATCH, … … 105 106 struct mrb_irep *root_irep; 106 107 struct mrb_irep *irep; 107 mrb_code *pc;108 const mrb_code *pc; 108 109 mrb_value *regs; 109 110 … … 152 153 dbgcmd_state dbgcmd_break(mrb_state*, mrdb_state*); 153 154 dbgcmd_state dbgcmd_info_break(mrb_state*, mrdb_state*); 155 dbgcmd_state dbgcmd_info_local(mrb_state*, mrdb_state*); 154 156 dbgcmd_state dbgcmd_delete(mrb_state*, mrdb_state*); 155 157 dbgcmd_state dbgcmd_enable(mrb_state*, mrdb_state*); -
EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-bin-debugger/tools/mrdb/mrdbconf.h
r321 r439 6 6 #ifndef MRDBCONF_H 7 7 #define MRDBCONF_H 8 9 #ifndef MRB_ENABLE_DEBUG_HOOK 10 # error mruby-bin-debugger need 'MRB_ENABLE_DEBUG_HOOK' configuration in your 'build_config.rb' 11 #endif 12 13 #ifdef MRB_DISABLE_STDIO 14 # error mruby-bin-debugger conflicts 'MRB_DISABLE_STDIO' configuration in your 'build_config.rb' 15 #endif 8 16 9 17 /* configuration options: */
Note:
See TracChangeset
for help on using the changeset viewer.