Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
debug information
#1
It is possible to debug a zxbasic program in any emulator but at BASIC level (not assembler) using the debug information generated on compiling time?
Reply
#2
Yes, there are commands for compiler to check memory and arrays, and you can add PRINT commands an remove them later.
I would like to have a DEBUG command which works like similar like PRINT, but on a protected window area, ignored in normal mode, but activated in Debugging mode.
Code:
DEBUG "Reached part 7"
DEBUG n
debug "Test nr "+str(testnr)
------------------------------------------------------------
http://lcd-one.da.ru redirector is dead
Visit my http://members.inode.at/838331/index.html home page!
Reply
#3
wilco2009 Wrote:It is possible to debug a zxbasic program in any emulator but at BASIC level (not assembler) using the debug information generated on compiling time?
The first thing to implement (yes, I'm very slow this year, but it's going to change soon) is the memory DUMP in asm :roll:
I've also think in what you comment. I was implementing my own emulator-debugger, but need more info on Z80 (e.g. my emulator resets after the "©1982 Sinclair Research Ltd." message and can't traced why.
Reply
#4
LCD Wrote:Yes, there are commands for compiler to check memory and arrays, and you can add PRINT commands an remove them later.
I would like to have a DEBUG command which works like similar like PRINT, but on a protected window area, ignored in normal mode, but activated in Debugging mode.
Code:
DEBUG "Reached part 7"
DEBUG n
debug "Test nr "+str(testnr)
Hmm nice. However, you can implement some sort of debugging using C-like macros. In C they do this way:
Code:
' Just an example of DEBUG implementation

#ifdef __DEBUG__
    ' This is our DEBUG command, it could be an asm routine, etc.
#    define DEBUG    PRINT AT 20,0;  
#else
    'If __DEBUG__ is not defined, just replace DEBUG with REM so nothing is compiled
#    define DEBUG    REM
#endif

'If __DEBUG__ is defined, DEBUG macro will be active.
#define __DEBUG__  

DIM x = 20
DEBUG "x="; x
Usually debugging is implemented using NMI or INTs (RST # in the Z80). Unfortunately, all RST have been used, so inserting a CALL TRACE asm instruction every BASIC line could be done, but the program will grow to much. :|
Reply
#5
The spectaculator debuguer is very good, but is only for assembler (or need a specific format for debugger file).
I`m not sure if is possible to get contact with the programmers team of spectaculator to colaborate in a high level debugging.
Reply
#6
boriel Wrote:
LCD Wrote:Yes, there are commands for compiler to check memory and arrays, and you can add PRINT commands an remove them later.
I would like to have a DEBUG command which works like similar like PRINT, but on a protected window area, ignored in normal mode, but activated in Debugging mode.
Code:
DEBUG "Reached part 7"
DEBUG n
debug "Test nr "+str(testnr)
Hmm nice. However, you can implement some sort of debugging using C-like macros. In C they do this way:
Code:
' Just an example of DEBUG implementation

#ifdef __DEBUG__
    ' This is our DEBUG command, it could be an asm routine, etc.
#    define DEBUG    PRINT AT 20,0;  
#else
    'If __DEBUG__ is not defined, just replace DEBUG with REM so nothing is compiled
#    define DEBUG    REM
#endif

'If __DEBUG__ is defined, DEBUG macro will be active.
#define __DEBUG__  

DIM x = 20
DEBUG "x="; x

Thats a solution... I currently use PRINT, but the area is not protected against overwritting by other screen output.
------------------------------------------------------------
http://lcd-one.da.ru redirector is dead
Visit my http://members.inode.at/838331/index.html home page!
Reply
#7
LCD Wrote:
boriel Wrote:
LCD Wrote:Yes, there are commands for compiler to check memory and arrays, and you can add PRINT commands an remove them later.
I would like to have a DEBUG command which works like similar like PRINT, but on a protected window area, ignored in normal mode, but activated in Debugging mode.
Code:
DEBUG "Reached part 7"
DEBUG n
debug "Test nr "+str(testnr)
Hmm nice. However, you can implement some sort of debugging using C-like macros. In C they do this way:
Code:
' Just an example of DEBUG implementation

#ifdef __DEBUG__
    ' This is our DEBUG command, it could be an asm routine, etc.
#    define DEBUG    PRINT AT 20,0;  
#else
    'If __DEBUG__ is not defined, just replace DEBUG with REM so nothing is compiled
#    define DEBUG    REM
#endif

'If __DEBUG__ is defined, DEBUG macro will be active.
#define __DEBUG__  

DIM x = 20
DEBUG "x="; x

Thats a solution... I currently use PRINT, but the area is not protected against overwritting by other screen output.
Yes I do it also, and is useful but is not a debuger.
The advantage of a debuger is the possibility to freezze the program in a point and trace step by step.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)