2 ** cmdprint.c - mruby debugger print command functions
8 #include <mruby/value.h>
9 #include <mruby/class.h>
10 #include <mruby/compile.h>
11 #include <mruby/error.h>
12 #include <mruby/numeric.h>
13 #include <mruby/string.h>
17 dbgcmd_print(mrb_state *mrb, mrdb_state *mrdb)
24 if (mrdb->wcnt <= 1) {
25 puts("Parameter not specified.");
29 ai = mrb_gc_arena_save(mrb);
32 expr = mrb_str_new_cstr(mrb, NULL);
33 for (wcnt=1; wcnt<mrdb->wcnt; wcnt++) {
34 expr = mrb_str_cat_lit(mrb, expr, " ");
35 expr = mrb_str_cat_cstr(mrb, expr, mrdb->words[wcnt]);
38 result = mrb_debug_eval(mrb, mrdb->dbg, RSTRING_PTR(expr), RSTRING_LEN(expr), NULL, 0);
40 /* $print_no = result */
41 printf("$%lu = ", (unsigned long)mrdb->print_no++);
42 fwrite(RSTRING_PTR(result), RSTRING_LEN(result), 1, stdout);
45 if (mrdb->print_no == 0) {
49 mrb_gc_arena_restore(mrb, ai);
55 dbgcmd_eval(mrb_state *mrb, mrdb_state *mrdb)
57 return dbgcmd_print(mrb, mrdb);
61 dbgcmd_info_local(mrb_state *mrb, mrdb_state *mrdb)
67 ai = mrb_gc_arena_save(mrb);
69 result = mrb_debug_eval(mrb, mrdb->dbg, "local_variables", 0, NULL, 1);
71 s = mrb_str_cat_lit(mrb, result, "\0");
72 printf("$%lu = %s\n", (unsigned long)mrdb->print_no++, RSTRING_PTR(s));
74 if (mrdb->print_no == 0) {
78 mrb_gc_arena_restore(mrb, ai);