EBlink version 6.00 and beyond, does support Squirrel script debugging and tracing.
To use the script debugger, place EBlink in verbose level 7 (debug info) for function level debugging or level 8 (trace info) for line level debugging.
For verbose levels below 7, debugging is turned off and breakpoints are ignored.
Invocation:
Debug level e.g. ./eblink -v7 -G
Trace level e.g. ./eblink -v8 -G
Example of breakpoint in script:
If the program is halted, all the local variables are printed and the user get the option to: Single-step, step-out, until exception or step to the end of current function
If the execution is main this means that the script file itself (no functions) is handled.
Example output debug level ( cli switch -v7 )
© = called function start
® = return current function
(e) = exception
Example output trace level ( cli switch -v8)
© = called function start
® = return current function
(e) = exception
(l) = script line
Example output breakpoint hit
Command line input:
g = continue (go)
c = run to next call of a function
r = run to the return of current function
e = run until exception trap
l = next script line
To use the script debugger, place EBlink in verbose level 7 (debug info) for function level debugging or level 8 (trace info) for line level debugging.
For verbose levels below 7, debugging is turned off and breakpoints are ignored.
Invocation:
Debug level e.g. ./eblink -v7 -G
Trace level e.g. ./eblink -v8 -G
Example of breakpoint in script:
Code:
foreach(arch in STMICRO)
if(arch[0] == targetApi.getCpuName()){
foreach(addr in arch[1]) {
try{
devReg = intrfApi.read(addr)
brkPt() <----------- Breakpoint
if(devReg) break
}
catch(e){}
}
If the program is halted, all the local variables are printed and the user get the option to: Single-step, step-out, until exception or step to the end of current function
If the execution is main this means that the script file itself (no functions) is handled.
Example output debug level ( cli switch -v7 )
Quote:Search script auto.script in path: f:\software\EBlink\scripts
Script found: auto.script
Squirrel debug main©[9] {auto.script}
Squirrel debug main®[42] {auto.script}
Squirrel debug ebMain©[22] {auto.script}
Search script atmel.script in path: f:\software\EBlink\scripts
Script found: atmel.script
Squirrel debug main©[13] {atmel.script}
Squirrel debug main®[154] {atmel.script}
Squirrel debug findDevice©[59] {atmel.script}
Squirrel debug findDevice(e)[105] {atmel.script}
Squirrel debug findDevice®[105] {atmel.script}
Search script stm32.script in path: f:\software\EBlink\scripts
Script found: stm32.script
Squirrel debug main©[17] {stm32.script}
Squirrel debug main®[167] {stm32.script}
Squirrel debug findDevice©[90] {stm32.script}
STmicro device : 0x413
Search script stmicro/stm32f4.script in path: f:\software\EBlink\scripts
Script found: stmicro/stm32f4.script
Squirrel debug main©[8] {stmicro/stm32f4.script}
Squirrel debug main®[166] {stmicro/stm32f4.script}
Squirrel debug stm32_device©[111] {stmicro/stm32f4.script}
STmicro family : STM32F4x5/4x7
Detected FLASH : 1024KB
Configured RAM : 192KB
Search script stmicro/flash/f7_f4_f2.script in path: f:\software\EBlink\scripts
Script found: stmicro/flash/f7_f4_f2.script
Squirrel debug main©[10] {stmicro/flash/f7_f4_f2.script}
Squirrel debug main®[350] {stmicro/flash/f7_f4_f2.script}
Squirrel debug stm32_device®[166] {stmicro/stm32f4.script}
Squirrel debug findDevice®[114] {stm32.script}
Squirrel debug ebMain®[27] {auto.script}
© = called function start
® = return current function
(e) = exception
Example output trace level ( cli switch -v8)
Quote:Required script load: atmel.script
Search script atmel.script in path: f:\software\EBlink\scripts
Script found: atmel.script
Squirrel trace main©[13] {atmel.script}
Squirrel trace main(l)[13] {atmel.script}
Squirrel trace main(l)[14] {atmel.script}
Squirrel trace main(l)[15] {atmel.script}
Squirrel trace main(l)[17] {atmel.script}
Squirrel trace main(l)[20] {atmel.script}
Squirrel trace main(l)[21] {atmel.script}
Squirrel trace main(l)[22] {atmel.script}
Squirrel trace main(l)[24] {atmel.script}
Squirrel trace main(l)[30] {atmel.script}
Squirrel trace main(l)[58] {atmel.script}
Squirrel trace main(l)[119] {atmel.script}
Squirrel trace main(l)[154] {atmel.script}
Squirrel trace main®[154] {atmel.script}
Squirrel trace ebMain(l)[26] {auto.script}
Squirrel trace findDevice©[61] {atmel.script}
Squirrel trace findDevice(l)[61] {atmel.script}
Squirrel trace findDevice(l)[66] {atmel.script}
Squirrel trace findDevice(l)[105] {atmel.script}
Squirrel trace findDevice(e)[105] {atmel.script}
Squirrel trace findDevice®[105] {atmel.script}
Squirrel trace ebMain(l)[31] {auto.script}
Squirrel trace ebMain(l)[34] {auto.script}
Squirrel trace ebMain(l)[24] {auto.script}
Squirrel trace ebMain(l)[25] {auto.script}
© = called function start
® = return current function
(e) = exception
(l) = script line
Example output breakpoint hit
Quote:Squirrel trace findDevice(l)[99] {stm32.script}
Squirrel trace findDevice(l)[99] {stm32.script}
Squirrel trace findDevice(l)[100] {stm32.script}
Squirrel trace findDevice(l)[101] {stm32.script}
Squirrel trace findDevice(l)[104] {stm32.script}
== BREAKPOINT ==
*FUNCTION [findDevice()] stm32.script line [104] <-- Call stack
*FUNCTION [ebMain()] auto.script line [26] <-- Call stack
-LOCALS: <-- start local variable(s) list
[arch] ARRAY
[@INDEX@] INTEGER( 3 )
[devReg] INTEGER( 268526611 )
[this] TABLE
[vendor] "stm32.script"
[@INDEX@] INTEGER( 1 )
[this] TABLE
Go, next Call, Return, Exception or Line? [g,c,r,e,l] <-- Command line input
Command line input:
g = continue (go)
c = run to next call of a function
r = run to the return of current function
e = run until exception trap
l = next script line