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)
25 if (mrdb->wcnt <= 1) {
26 puts("Parameter not specified.");
30 ai = mrb_gc_arena_save(mrb);
33 expr = mrb_str_new_cstr(mrb, NULL);
34 for (wcnt=1; wcnt<mrdb->wcnt; wcnt++) {
35 expr = mrb_str_cat_lit(mrb, expr, " ");
36 expr = mrb_str_cat_cstr(mrb, expr, mrdb->words[wcnt]);
39 result = mrb_debug_eval(mrb, mrdb->dbg, RSTRING_PTR(expr), RSTRING_LEN(expr), NULL, 0);
41 /* $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));
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);