stage1 完成07,08测试
This commit is contained in:
@@ -995,8 +995,23 @@ int spl_vm_run_once(spl_vm_t *vm) {
|
||||
|
||||
/* ========== Debug ========== */
|
||||
case SPL_DBG: {
|
||||
fprintf(stderr, "---DGB: current ip %zu---\n", vm->ip);
|
||||
spl_vm_dump_instr(vm, vm->ip - 6);
|
||||
spl_vm_dump_instr(vm, vm->ip - 5);
|
||||
spl_vm_dump_instr(vm, vm->ip - 4);
|
||||
spl_vm_dump_instr(vm, vm->ip - 3);
|
||||
spl_vm_dump_instr(vm, vm->ip - 2);
|
||||
spl_vm_dump_instr(vm, vm->ip - 1);
|
||||
spl_vm_dump_instr(vm, vm->ip);
|
||||
spl_vm_dump_instr(vm, vm->ip + 1);
|
||||
spl_vm_backtrace(vm, vm->fp);
|
||||
return 2; /* breakpoint: pause execution */
|
||||
spl_vm_stackdump(vm, vm->sp);
|
||||
fprintf(stderr, "---DGB END ---\n");
|
||||
break;
|
||||
}
|
||||
|
||||
case SPL_BK: {
|
||||
return 0; /* breakpoint: pause execution */
|
||||
}
|
||||
|
||||
default:
|
||||
@@ -1057,7 +1072,7 @@ void spl_vm_stackdump(spl_vm_t *vm, spl_val_t sp) {
|
||||
fprintf(stderr, " stack (sp=%zd, fp=%zd):\n", sp, vm->fp);
|
||||
spl_val_t start = sp > 16 ? sp - 16 : 0;
|
||||
for (spl_val_t i = start; i < sp; i++) {
|
||||
fprintf(stderr, " [%zd] = 0x%016zx (%zd)\n", i, vm->stacks.data[i], vm->stacks.data[i]);
|
||||
fprintf(stderr, " [%3zd] = 0x%016zx (%zd)\n", i, vm->stacks.data[i], vm->stacks.data[i]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1070,7 +1085,7 @@ int spl_vm_backtrace(spl_vm_t *vm, spl_val_t fp) {
|
||||
spl_val_t _saved_ip = vm->frames.data[i].saved_ip;
|
||||
spl_val_t _saved_fp = vm->frames.data[i].saved_fp;
|
||||
const char *_fn = func_name_by_ip(vm->prog, _saved_ip - 1);
|
||||
fprintf(stderr, " [%zd] %s (fp=%zd, ip=%zd, args=%zd)\n", i, _fn, _saved_fp, _saved_ip,
|
||||
fprintf(stderr, " [%3zd] %s (fp=%zd, ip=%zd, args=%zd)\n", i, _fn, _saved_fp, _saved_ip,
|
||||
vm->frames.data[i].nargs);
|
||||
}
|
||||
const char *_cur = func_name_by_ip(vm->prog, vm->ip);
|
||||
|
||||
Reference in New Issue
Block a user