source: EcnlProtoTool/trunk/mruby-1.2.0/mrbgems/mruby-bin-debugger/tools/mrdb/cmdrun.c@ 270

Last change on this file since 270 was 270, checked in by coas-nagasima, 7 years ago

mruby版ECNLプロトタイピング・ツールを追加

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-csrc
File size: 1.1 KB
Line 
1/*
2** cmdrun.c - mruby debugger run command functions
3**
4*/
5
6#include "mruby/opcode.h"
7#include "mrdb.h"
8
9dbgcmd_state
10dbgcmd_run(mrb_state *mrb, mrdb_state *mrdb)
11{
12 mrb_debug_context *dbg = mrdb->dbg;
13
14 if( dbg->xm == DBG_INIT ){
15 dbg->xm = DBG_RUN;
16 } else {
17 dbg->xm = DBG_QUIT;
18 if( dbg->xphase == DBG_PHASE_RUNNING ){
19 struct RClass *exc;
20 puts("Start it from the beginning.");
21 exc = mrb_define_class(mrb, "DebuggerRestart", mrb_class_get(mrb, "Exception"));
22 mrb_raise(mrb, exc, "Restart mrdb.");
23 }
24 }
25
26 return DBGST_RESTART;
27}
28
29dbgcmd_state
30dbgcmd_continue(mrb_state *mrb, mrdb_state *mrdb)
31{
32 mrb_debug_context *dbg = mrdb->dbg;
33 int ccnt = 1;
34
35 if( mrdb->wcnt > 1 ){
36 sscanf(mrdb->words[1], "%d", &ccnt);
37 }
38 dbg->ccnt = (uint16_t)(ccnt > 0 ? ccnt : 1); /* count of continue */
39
40 if( dbg->xphase == DBG_PHASE_AFTER_RUN ){
41 puts("The program is not running.");
42 dbg->xm = DBG_QUIT;
43 } else {
44 dbg->xm = DBG_RUN;
45 }
46 return DBGST_CONTINUE;
47}
48
49dbgcmd_state
50dbgcmd_step(mrb_state *mrb, mrdb_state *mrdb)
51{
52 mrdb->dbg->xm = DBG_STEP;
53 return DBGST_CONTINUE;
54}
Note: See TracBrowser for help on using the repository browser.