update README.md
This commit is contained in:
parent
7417d5e635
commit
c4b7712e53
243
README.md
243
README.md
|
@ -1556,15 +1556,20 @@ hello
|
||||||
[vm] error: error occurred this line
|
[vm] error: error occurred this line
|
||||||
[vm] native function error.
|
[vm] native function error.
|
||||||
trace back:
|
trace back:
|
||||||
0x00000088: callb 0x22 <__builtin_die@0x417620> (lib.nas:19)
|
0x000000ac: 40 00 00 00 25 callb 0x25 <__builtin_die@0x419c00> (lib.nas:131)
|
||||||
0x000002af: callfv 0x1 (a.nas:5)
|
0x00000463: 3e 00 00 00 01 callfv 0x1 (a.nas:4)
|
||||||
0x000002b3: callfv 0x0 (a.nas:7)
|
0x00000467: 3e 00 00 00 00 callfv 0x0 (a.nas:6)
|
||||||
vm stack(limit 10, total 5):
|
vm stack(0x7fffcdeb0210<sp+77>, limit 10, total 10):
|
||||||
| null |
|
0x00000056 | null |
|
||||||
| addr | pc:0x2af
|
0x00000055 | pc | 0x463
|
||||||
| func | <0x6c62c0> entry:0x88
|
0x00000054 | addr | 0x7fffcdeb0220
|
||||||
| addr | pc:0x2b3
|
0x00000053 | str | <0xf38370> error occurred this line
|
||||||
| func | <0x6c8910> entry:0x2a9
|
0x00000052 | nil |
|
||||||
|
0x00000051 | func | <0xef2d70> entry:0x45d
|
||||||
|
0x00000050 | pc | 0x467
|
||||||
|
0x0000004f | addr | 0x0
|
||||||
|
0x0000004e | nil |
|
||||||
|
0x0000004d | nil |
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. stack overflow crash info
|
### 2. stack overflow crash info
|
||||||
|
@ -1584,22 +1589,21 @@ func(f){
|
||||||
```javascript
|
```javascript
|
||||||
[vm] stack overflow
|
[vm] stack overflow
|
||||||
trace back:
|
trace back:
|
||||||
0x0000000d: calll 0x1 (a.nas:5)
|
0x00000468: 3e 00 00 00 01 callfv 0x1 (a.nas:5)
|
||||||
0x0000000f: callfv 0x1 (a.nas:5)
|
0x00000468: 1620 same call(s)
|
||||||
0x0000000f: 2044 same call(s)
|
0x00000460: 3e 00 00 00 01 callfv 0x1 (a.nas:2)
|
||||||
0x00000007: callfv 0x1 (a.nas:2)
|
0x0000046c: 3e 00 00 00 01 callfv 0x1 (a.nas:3)
|
||||||
0x00000013: callfv 0x1 (a.nas:3)
|
vm stack(0x7ffffb444450<sp+77>, limit 10, total 8112):
|
||||||
vm stack(limit 10, total 4095):
|
0x00001ffc | func | <0x11f3860> entry:0x466
|
||||||
| func | <0x24f1f10> entry:0xd
|
0x00001ffb | func | <0x11f3860> entry:0x466
|
||||||
| addr | pc:0xf
|
0x00001ffa | pc | 0x468
|
||||||
| func | <0x24f1f10> entry:0xd
|
0x00001ff9 | addr | 0x7ffffb463ea0
|
||||||
| addr | pc:0xf
|
0x00001ff8 | func | <0x11f3860> entry:0x466
|
||||||
| func | <0x24f1f10> entry:0xd
|
0x00001ff7 | nil |
|
||||||
| addr | pc:0xf
|
0x00001ff6 | func | <0x11f3860> entry:0x466
|
||||||
| func | <0x24f1f10> entry:0xd
|
0x00001ff5 | pc | 0x468
|
||||||
| addr | pc:0xf
|
0x00001ff4 | addr | 0x7ffffb463e50
|
||||||
| func | <0x24f1f10> entry:0xd
|
0x00001ff3 | func | <0x11f3860> entry:0x466
|
||||||
| addr | pc:0xf
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3. normal vm error crash info
|
### 3. normal vm error crash info
|
||||||
|
@ -1615,9 +1619,9 @@ func(){
|
||||||
```javascript
|
```javascript
|
||||||
[vm] callv: must call a vector/hash/string
|
[vm] callv: must call a vector/hash/string
|
||||||
trace back:
|
trace back:
|
||||||
0x00000008: callv 0x0 (a.nas:3)
|
0x00000461: 3b 00 00 00 00 callv 0x0 (a.nas:3)
|
||||||
vm stack(limit 10, total 1):
|
vm stack(0x7fffecc93c50<sp+77>, limit 10, total 1):
|
||||||
| num | 0
|
0x0000004d | num | 0
|
||||||
```
|
```
|
||||||
|
|
||||||
### 4. detailed crash info
|
### 4. detailed crash info
|
||||||
|
@ -1625,39 +1629,111 @@ vm stack(limit 10, total 1):
|
||||||
Use command __`-d`__ or __`--detail`__ the trace back info will show more details:
|
Use command __`-d`__ or __`--detail`__ the trace back info will show more details:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
hello world
|
hello
|
||||||
[vm] error: exception test
|
[vm] error: error occurred this line
|
||||||
[vm] native function error.
|
[vm] native function error.
|
||||||
trace back:
|
trace back:
|
||||||
0x00000088: callb 0x22 <__builtin_die@0x417280> (lib.nas:19)
|
0x000000ac: 40 00 00 00 25 callb 0x25 <__builtin_die@0x419c00> (lib.nas:131)
|
||||||
0x00000312: callfv 0x1 (test/exception.nas:16)
|
0x00000463: 3e 00 00 00 01 callfv 0x1 (a.nas:4)
|
||||||
0x00000346: callfv 0x0 (test/exception.nas:39)
|
0x00000467: 3e 00 00 00 00 callfv 0x0 (a.nas:6)
|
||||||
vm stack(limit 10, total 5):
|
vm stack(0x7ffff0019810<sp+77>, limit 10, total 10):
|
||||||
| null |
|
0x00000056 | null |
|
||||||
| addr | pc:0x312
|
0x00000055 | pc | 0x463
|
||||||
| func | <0x23ced40> entry:0x88
|
0x00000054 | addr | 0x7ffff0019820
|
||||||
| addr | pc:0x346
|
0x00000053 | str | <0x14a7890> error occurred this line
|
||||||
| func | <0x23d1610> entry:0x30c
|
0x00000052 | nil |
|
||||||
mcall address: 0x24c2158
|
0x00000051 | func | <0x1462290> entry:0x45d
|
||||||
global:
|
0x00000050 | pc | 0x467
|
||||||
[0x00000000] | func | <0x23f11f0> entry:0x5
|
0x0000004f | addr | 0x0
|
||||||
[0x00000001] | func | <0x23ce2a0> entry:0xc
|
0x0000004e | nil |
|
||||||
[0x00000002] | func | <0x23ce340> entry:0x14
|
0x0000004d | nil |
|
||||||
...
|
maddr:
|
||||||
[0x0000001b] | hash | <0x24a8480> {14 val}
|
(0x0)
|
||||||
...
|
localr:
|
||||||
[0x00000021] | num | 0.3048
|
(0x7ffff0019860)
|
||||||
[0x00000022] | num | 3.7854
|
funcr:
|
||||||
...
|
(<0x1452d40> entry:0xac)
|
||||||
[0x0000002e] | num | 57.2958
|
global(0x7ffff0019340<sp+0>):
|
||||||
[0x0000002f] | hash | <0x24a85a0> {16 val}
|
0x00000000 | func | <0x146faf0> entry:0x5
|
||||||
[0x00000030] | hash | <0x24a8600> {4 val}
|
0x00000001 | func | <0x14528e0> entry:0xc
|
||||||
...
|
0x00000002 | func | <0x146fc10> entry:0x14
|
||||||
[0x00000035] | func | <0x23d17f0> entry:0x335
|
0x00000003 | func | <0x1445700> entry:0x1c
|
||||||
local:
|
0x00000004 | func | <0x1452900> entry:0x23
|
||||||
[0x00000000] | nil |
|
0x00000005 | func | <0x14411c0> entry:0x29
|
||||||
[0x00000001] | str | <0x24b9410> exception test
|
0x00000006 | func | <0x1441260> entry:0x31
|
||||||
no upvalue exists
|
0x00000007 | func | <0x1441300> entry:0x39
|
||||||
|
0x00000008 | func | <0x14413a0> entry:0x40
|
||||||
|
0x00000009 | func | <0x1441440> entry:0x47
|
||||||
|
0x0000000a | func | <0x14414e0> entry:0x4e
|
||||||
|
0x0000000b | func | <0x145eea0> entry:0x54
|
||||||
|
0x0000000c | func | <0x145ef40> entry:0x5d
|
||||||
|
0x0000000d | func | <0x145efe0> entry:0x6a
|
||||||
|
0x0000000e | func | <0x145f080> entry:0x71
|
||||||
|
0x0000000f | func | <0x145f120> entry:0x78
|
||||||
|
0x00000010 | func | <0x145f1c0> entry:0x7f
|
||||||
|
0x00000011 | func | <0x14457a0> entry:0x87
|
||||||
|
0x00000012 | func | <0x14457c0> entry:0x8f
|
||||||
|
0x00000013 | func | <0x1452b60> entry:0x96
|
||||||
|
0x00000014 | func | <0x1452c00> entry:0x9d
|
||||||
|
0x00000015 | func | <0x1452ca0> entry:0xa3
|
||||||
|
0x00000016 | func | <0x1452d40> entry:0xac
|
||||||
|
0x00000017 | func | <0x1452de0> entry:0xb4
|
||||||
|
0x00000018 | func | <0x1452e80> entry:0xbb
|
||||||
|
0x00000019 | func | <0x1452ea0> entry:0xc5
|
||||||
|
0x0000001a | func | <0x146cd70> entry:0xdc
|
||||||
|
0x0000001b | func | <0x146ce10> entry:0xe4
|
||||||
|
0x0000001c | func | <0x146ceb0> entry:0xec
|
||||||
|
0x0000001d | func | <0x146cf50> entry:0xf4
|
||||||
|
0x0000001e | func | <0x146cff0> entry:0xfc
|
||||||
|
0x0000001f | func | <0x146d090> entry:0x103
|
||||||
|
0x00000020 | func | <0x14724c0> entry:0x10a
|
||||||
|
0x00000021 | func | <0x1472560> entry:0x111
|
||||||
|
0x00000022 | func | <0x1472600> entry:0x11e
|
||||||
|
0x00000023 | func | <0x14726a0> entry:0x125
|
||||||
|
0x00000024 | func | <0x1472740> entry:0x131
|
||||||
|
0x00000025 | func | <0x14727e0> entry:0x13c
|
||||||
|
0x00000026 | func | <0x1472880> entry:0x147
|
||||||
|
0x00000027 | func | <0x1472ee0> entry:0x152
|
||||||
|
0x00000028 | func | <0x1472f80> entry:0x15d
|
||||||
|
0x00000029 | func | <0x1473020> entry:0x174
|
||||||
|
0x0000002a | func | <0x14730c0> entry:0x18d
|
||||||
|
0x0000002b | func | <0x1473160> entry:0x198
|
||||||
|
0x0000002c | func | <0x1473200> entry:0x1a4
|
||||||
|
0x0000002d | func | <0x14732a0> entry:0x1bd
|
||||||
|
0x0000002e | func | <0x146d0b0> entry:0x1e9
|
||||||
|
0x0000002f | func | <0x146d0d0> entry:0x1f8
|
||||||
|
0x00000030 | hash | <0x1495130> {14 val}
|
||||||
|
0x00000031 | func | <0x145d1a0> entry:0x25c
|
||||||
|
0x00000032 | hash | <0x1495150> {9 val}
|
||||||
|
0x00000033 | hash | <0x1495170> {14 val}
|
||||||
|
0x00000034 | hash | <0x1495190> {16 val}
|
||||||
|
0x00000035 | hash | <0x14951b0> {4 val}
|
||||||
|
0x00000036 | hash | <0x14951d0> {1 val}
|
||||||
|
0x00000037 | hash | <0x14951f0> {1 val}
|
||||||
|
0x00000038 | num | 0.0174533
|
||||||
|
0x00000039 | num | 0.5925
|
||||||
|
0x0000003a | num | 0.3048
|
||||||
|
0x0000003b | num | 3.7854
|
||||||
|
0x0000003c | num | 0.0254
|
||||||
|
0x0000003d | num | 2.2046
|
||||||
|
0x0000003e | num | 1.6878
|
||||||
|
0x0000003f | num | 0.5144
|
||||||
|
0x00000040 | num | 0.2642
|
||||||
|
0x00000041 | num | 0.4536
|
||||||
|
0x00000042 | num | 3.2808
|
||||||
|
0x00000043 | num | 39.3701
|
||||||
|
0x00000044 | num | 0.00054
|
||||||
|
0x00000045 | num | 1.9438
|
||||||
|
0x00000046 | num | 1852
|
||||||
|
0x00000047 | num | 57.2958
|
||||||
|
0x00000048 | func | <0x1461f70> entry:0x41a
|
||||||
|
0x00000049 | func | <0x1462010> entry:0x42d
|
||||||
|
0x0000004a | func | <0x14620b0> entry:0x439
|
||||||
|
0x0000004b | func | <0x1462150> entry:0x446
|
||||||
|
0x0000004c | func | <0x14621f0> entry:0x453
|
||||||
|
local(0x7ffff0019860<sp+82>):
|
||||||
|
0x00000000 | nil |
|
||||||
|
0x00000001 | str | <0x14a7890> error occurred this line
|
||||||
```
|
```
|
||||||
|
|
||||||
## __Debugger__
|
## __Debugger__
|
||||||
|
@ -1671,6 +1747,7 @@ and the debugger will print this:
|
||||||
```javascript
|
```javascript
|
||||||
[debug] nasal debug mode
|
[debug] nasal debug mode
|
||||||
input 'h' to get help
|
input 'h' to get help
|
||||||
|
|
||||||
source code:
|
source code:
|
||||||
--> import("lib.nas");
|
--> import("lib.nas");
|
||||||
var fib=func(x)
|
var fib=func(x)
|
||||||
|
@ -1681,15 +1758,15 @@ source code:
|
||||||
for(var i=0;i<31;i+=1)
|
for(var i=0;i<31;i+=1)
|
||||||
print(fib(i),'\n');
|
print(fib(i),'\n');
|
||||||
next bytecode:
|
next bytecode:
|
||||||
--> 0x00000000: intg 0x34 (test/fib.nas:0)
|
--> 0x00000000: 01 00 00 00 4f intg 0x4f (a.nas:0)
|
||||||
0x00000001: newf 0x5 (lib.nas:1)
|
0x00000001: 0b 00 00 00 05 newf 0x5 (lib.nas:5)
|
||||||
0x00000002: intl 0x2 (lib.nas:1)
|
0x00000002: 02 00 00 00 02 intl 0x2 (lib.nas:5)
|
||||||
0x00000003: para 0x0 ("filename") (lib.nas:1)
|
0x00000003: 0d 00 00 00 00 para 0x0 ("filename") (lib.nas:5)
|
||||||
0x00000004: jmp 0x7 (lib.nas:1)
|
0x00000004: 32 00 00 00 07 jmp 0x7 (lib.nas:5)
|
||||||
0x00000005: callb 0x21 <__builtin_import@0x417190> (lib.nas:1)
|
0x00000005: 40 00 00 00 24 callb 0x24 <__builtin_import@0x419b20> (lib.nas:6)
|
||||||
0x00000006: ret 0x0 (lib.nas:1)
|
0x00000006: 4a 00 00 00 00 ret 0x0 (lib.nas:6)
|
||||||
0x00000007: loadg 0x0 (lib.nas:1)
|
0x00000007: 03 00 00 00 00 loadg 0x0 (lib.nas:5)
|
||||||
vm stack(limit 5, total 0)
|
vm stack(0x7fffe05e3190<sp+79>, limit 5, total 0)
|
||||||
>>
|
>>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -1714,7 +1791,7 @@ If want help, input `h` to get help.
|
||||||
When running the debugger, you could see what is on stack.
|
When running the debugger, you could see what is on stack.
|
||||||
This will help you debugging or learning how the vm works:
|
This will help you debugging or learning how the vm works:
|
||||||
|
|
||||||
```bash
|
```javascript
|
||||||
source code:
|
source code:
|
||||||
import("lib.nas");
|
import("lib.nas");
|
||||||
var fib=func(x)
|
var fib=func(x)
|
||||||
|
@ -1725,19 +1802,19 @@ source code:
|
||||||
for(var i=0;i<31;i+=1)
|
for(var i=0;i<31;i+=1)
|
||||||
print(fib(i),'\n');
|
print(fib(i),'\n');
|
||||||
next bytecode:
|
next bytecode:
|
||||||
0x000002f0: para 0x3e ("x") (test/fib.nas:2)
|
0x00000458: 4a 00 00 00 00 ret 0x0 (lib.nas:463)
|
||||||
0x000002f1: jmp 0x301 (test/fib.nas:2)
|
0x00000459: 03 00 00 00 4c loadg 0x4c (lib.nas:463)
|
||||||
0x000002f2: calll 0x1 (test/fib.nas:4)
|
0x0000045a: 0b 00 00 04 5e newf 0x45e (a.nas:2)
|
||||||
--> 0x000002f3: lessc 0x2 (2) (test/fib.nas:4)
|
0x0000045b: 02 00 00 00 02 intl 0x2 (a.nas:2)
|
||||||
0x000002f4: jf 0x2f7 (test/fib.nas:4)
|
0x0000045c: 0d 00 00 00 1c para 0x1c ("x") (a.nas:2)
|
||||||
0x000002f5: calll 0x1 (test/fib.nas:4)
|
0x0000045d: 32 00 00 04 6d jmp 0x46d (a.nas:2)
|
||||||
0x000002f6: ret 0x0 (test/fib.nas:4)
|
--> 0x0000045e: 39 00 00 00 01 calll 0x1 (a.nas:4)
|
||||||
0x000002f7: callg 0x33 (test/fib.nas:5)
|
0x0000045f: 2d 00 00 00 02 lessc 0x2 (2) (a.nas:4)
|
||||||
vm stack(limit 5, total 6):
|
vm stack(0x7fffe05e3190<sp+79>, limit 5, total 6):
|
||||||
| num | 0
|
0x00000054 | pc | 0x476
|
||||||
| addr | pc:0x30a
|
0x00000053 | addr | 0x0
|
||||||
| num | 0
|
0x00000052 | num | 0
|
||||||
| nil |
|
0x00000051 | nil |
|
||||||
| func | <0xed92d0> entry:0x2f2
|
0x00000050 | nil |
|
||||||
>>
|
>>
|
||||||
```
|
```
|
||||||
|
|
Loading…
Reference in New Issue