diff options
| author | kimu_shu <[email protected]> | 2019-02-19 18:10:05 +0900 |
|---|---|---|
| committer | kimu_shu <[email protected]> | 2019-02-19 18:10:05 +0900 |
| commit | 477ffc747368f26ee90cb03fa69d23690298fc3d (patch) | |
| tree | 2f37105d3235e57b8e1098e9166cf32fe4327f65 /mrbgems/mruby-bin-debugger/tools/mrdb/cmdprint.c | |
| parent | 971bfd13c152bb9ac8f09737b89a228c88e15d66 (diff) | |
| download | mruby-477ffc747368f26ee90cb03fa69d23690298fc3d.tar.gz mruby-477ffc747368f26ee90cb03fa69d23690298fc3d.zip | |
Add "info locals" command to mrdb
Diffstat (limited to 'mrbgems/mruby-bin-debugger/tools/mrdb/cmdprint.c')
| -rw-r--r-- | mrbgems/mruby-bin-debugger/tools/mrdb/cmdprint.c | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/mrbgems/mruby-bin-debugger/tools/mrdb/cmdprint.c b/mrbgems/mruby-bin-debugger/tools/mrdb/cmdprint.c index cca636711..25f071589 100644 --- a/mrbgems/mruby-bin-debugger/tools/mrdb/cmdprint.c +++ b/mrbgems/mruby-bin-debugger/tools/mrdb/cmdprint.c @@ -36,7 +36,7 @@ dbgcmd_print(mrb_state *mrb, mrdb_state *mrdb) expr = mrb_str_cat_cstr(mrb, expr, mrdb->words[wcnt]); } - result = mrb_debug_eval(mrb, mrdb->dbg, RSTRING_PTR(expr), RSTRING_LEN(expr), NULL); + result = mrb_debug_eval(mrb, mrdb->dbg, RSTRING_PTR(expr), RSTRING_LEN(expr), NULL, 0); /* $print_no = result */ s = mrb_str_cat_lit(mrb, result, "\0"); @@ -56,3 +56,26 @@ dbgcmd_eval(mrb_state *mrb, mrdb_state *mrdb) { return dbgcmd_print(mrb, mrdb); } + +dbgcmd_state +dbgcmd_info_local(mrb_state *mrb, mrdb_state *mrdb) +{ + mrb_value result; + mrb_value s; + int ai; + + ai = mrb_gc_arena_save(mrb); + + result = mrb_debug_eval(mrb, mrdb->dbg, "local_variables", 0, NULL, 1); + + s = mrb_str_cat_lit(mrb, result, "\0"); + printf("$%lu = %s\n", (unsigned long)mrdb->print_no++, RSTRING_PTR(s)); + + if (mrdb->print_no == 0) { + mrdb->print_no = 1; + } + + mrb_gc_arena_restore(mrb, ai); + + return DBGST_PROMPT; +} |
