summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-bin-debugger/tools/mrdb/cmdrun.c
diff options
context:
space:
mode:
authorHiroshi Mimaki <[email protected]>2014-11-19 09:02:10 +0900
committerHiroshi Mimaki <[email protected]>2014-11-19 09:02:10 +0900
commit4e4bfb08cbbc0198d1489004f807ba6a75469f16 (patch)
treec079d5715e1942db88e9ca6472223acc73ac7059 /mrbgems/mruby-bin-debugger/tools/mrdb/cmdrun.c
parent5c6d6309b6b5e01ef3ff38f772e0fdd3fc5dd372 (diff)
parentb473043acfd1b4697e978e3ac4656dc9b03b3b22 (diff)
downloadmruby-1.1.0.tar.gz
mruby-1.1.0.zip
Merge pull request #2640 from mruby-Forum/v1.1.01.1.0
mruby-1.1.0
Diffstat (limited to 'mrbgems/mruby-bin-debugger/tools/mrdb/cmdrun.c')
-rwxr-xr-xmrbgems/mruby-bin-debugger/tools/mrdb/cmdrun.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/mrbgems/mruby-bin-debugger/tools/mrdb/cmdrun.c b/mrbgems/mruby-bin-debugger/tools/mrdb/cmdrun.c
new file mode 100755
index 000000000..8d8340560
--- /dev/null
+++ b/mrbgems/mruby-bin-debugger/tools/mrdb/cmdrun.c
@@ -0,0 +1,54 @@
+/*
+** cmdrun.c - mruby debugger run command functions
+**
+*/
+
+#include "mruby/opcode.h"
+#include "mrdb.h"
+
+dbgcmd_state
+dbgcmd_run(mrb_state *mrb, mrdb_state *mrdb)
+{
+ mrb_debug_context *dbg = mrdb->dbg;
+
+ if( dbg->xm == DBG_INIT ){
+ dbg->xm = DBG_RUN;
+ } else {
+ dbg->xm = DBG_QUIT;
+ if( dbg->xphase == DBG_PHASE_RUNNING ){
+ struct RClass *exc;
+ puts("Start it from the beginning.");
+ exc = mrb_define_class(mrb, "DebuggerRestart", mrb_class_get(mrb, "Exception"));
+ mrb_raise(mrb, exc, "Restart mrdb.");
+ }
+ }
+
+ return DBGST_RESTART;
+}
+
+dbgcmd_state
+dbgcmd_continue(mrb_state *mrb, mrdb_state *mrdb)
+{
+ mrb_debug_context *dbg = mrdb->dbg;
+ int ccnt = 1;
+
+ if( mrdb->wcnt > 1 ){
+ sscanf(mrdb->words[1], "%d", &ccnt);
+ }
+ dbg->ccnt = (uint16_t)(ccnt > 0 ? ccnt : 1); /* count of continue */
+
+ if( dbg->xphase == DBG_PHASE_AFTER_RUN ){
+ puts("The program is not running.");
+ dbg->xm = DBG_QUIT;
+ } else {
+ dbg->xm = DBG_RUN;
+ }
+ return DBGST_CONTINUE;
+}
+
+dbgcmd_state
+dbgcmd_step(mrb_state *mrb, mrdb_state *mrdb)
+{
+ mrdb->dbg->xm = DBG_STEP;
+ return DBGST_CONTINUE;
+}