+added a TRACE command; *fixed an infinity loop bug in the mb_debug_get_stack_trace function.
This commit is contained in:
parent
5521ab62fc
commit
1f5bb6423b
4
HISTORY
4
HISTORY
@ -1,3 +1,7 @@
|
|||||||
|
Jan. 30 2016
|
||||||
|
Added a TRACE command to the shell
|
||||||
|
Fixed an infinity bug in the mb_debug_get_stack_trace function
|
||||||
|
|
||||||
Jan. 29 2016
|
Jan. 29 2016
|
||||||
Fixed lookup bugs with member sub routine of a class instance
|
Fixed lookup bugs with member sub routine of a class instance
|
||||||
Fixed a member accessing bug with class instance
|
Fixed a member accessing bug with class instance
|
||||||
|
@ -11190,7 +11190,7 @@ int mb_debug_get_stack_trace(struct mb_interpreter_t* s, void** l, char** fs, un
|
|||||||
|
|
||||||
if(fs && fc) {
|
if(fs && fc) {
|
||||||
f = s->stack_frames->prev;
|
f = s->stack_frames->prev;
|
||||||
while(f && f->data && i < fc) {
|
while(f != s->stack_frames && f && f->data && i < fc) {
|
||||||
fs[i++] = (char*)f->data;
|
fs[i++] = (char*)f->data;
|
||||||
f = f->prev;
|
f = f->prev;
|
||||||
}
|
}
|
||||||
|
Binary file not shown.
26
shell/main.c
26
shell/main.c
@ -1144,6 +1144,30 @@ static int set_importing_dirs(struct mb_interpreter_t* s, void** l) {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int trace(struct mb_interpreter_t* s, void** l) {
|
||||||
|
int result = MB_FUNC_OK;
|
||||||
|
char* frames[16];
|
||||||
|
char** p = frames;
|
||||||
|
|
||||||
|
mb_assert(s && l);
|
||||||
|
|
||||||
|
mb_check(mb_attempt_open_bracket(s, l));
|
||||||
|
|
||||||
|
mb_check(mb_attempt_close_bracket(s, l));
|
||||||
|
|
||||||
|
mb_check(mb_debug_get_stack_trace(s, l, frames, _countof(frames)));
|
||||||
|
|
||||||
|
while(*p) {
|
||||||
|
_printf("%s", *p);
|
||||||
|
++p;
|
||||||
|
if(*p) {
|
||||||
|
_printf(" <- ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
static int gc(struct mb_interpreter_t* s, void** l) {
|
static int gc(struct mb_interpreter_t* s, void** l) {
|
||||||
int result = MB_FUNC_OK;
|
int result = MB_FUNC_OK;
|
||||||
int_t collected = 0;
|
int_t collected = 0;
|
||||||
@ -1193,6 +1217,7 @@ static void _on_stepped(struct mb_interpreter_t* s, char* f, int p, unsigned sho
|
|||||||
static void _on_error(struct mb_interpreter_t* s, mb_error_e e, char* m, char* f, int p, unsigned short row, unsigned short col, int abort_code) {
|
static void _on_error(struct mb_interpreter_t* s, mb_error_e e, char* m, char* f, int p, unsigned short row, unsigned short col, int abort_code) {
|
||||||
mb_unrefvar(s);
|
mb_unrefvar(s);
|
||||||
mb_unrefvar(p);
|
mb_unrefvar(p);
|
||||||
|
|
||||||
if(SE_NO_ERR != e) {
|
if(SE_NO_ERR != e) {
|
||||||
if(f) {
|
if(f) {
|
||||||
_printf("Error:\n [LINE] %d, [COL] %d, [FILE] %s,\n [CODE] %d, [MESSAGE] %s, [ABORT CODE] %d.\n", row, col, f, e, m, abort_code);
|
_printf("Error:\n [LINE] %d, [COL] %d, [FILE] %s,\n [CODE] %d, [MESSAGE] %s, [ABORT CODE] %d.\n", row, col, f, e, m, abort_code);
|
||||||
@ -1245,6 +1270,7 @@ static void _on_startup(void) {
|
|||||||
#endif /* _HAS_TICKS */
|
#endif /* _HAS_TICKS */
|
||||||
mb_reg_fun(bas, now);
|
mb_reg_fun(bas, now);
|
||||||
mb_reg_fun(bas, set_importing_dirs);
|
mb_reg_fun(bas, set_importing_dirs);
|
||||||
|
mb_reg_fun(bas, trace);
|
||||||
mb_reg_fun(bas, gc);
|
mb_reg_fun(bas, gc);
|
||||||
mb_reg_fun(bas, beep);
|
mb_reg_fun(bas, beep);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user