mirror of
https://github.com/QB64-Phoenix-Edition/QB64pe.git
synced 2024-06-30 05:10:37 +00:00
Uses ENVIRON to set send the port number to the debuggee. Also:
- Limits sending "call" info to the IDE (not to hog the communication channel) - Add $INCLUDE info to call stack.
This commit is contained in:
parent
2f61b9e541
commit
de236d4a5f
|
@ -11,7 +11,7 @@ DIM SHARED IDEBuildModeChanged
|
||||||
DIM SHARED IdeInfo AS STRING
|
DIM SHARED IdeInfo AS STRING
|
||||||
DIM SHARED IdeContextHelpSF AS _BYTE
|
DIM SHARED IdeContextHelpSF AS _BYTE
|
||||||
|
|
||||||
DIM SHARED host&
|
DIM SHARED host&, hostport$
|
||||||
|
|
||||||
DIM SHARED IdeSystem AS LONG
|
DIM SHARED IdeSystem AS LONG
|
||||||
'1=Entering text into the main IDE window
|
'1=Entering text into the main IDE window
|
||||||
|
|
|
@ -683,7 +683,9 @@ FUNCTION ide2 (ignore)
|
||||||
STATIC attemptToHost AS _BYTE
|
STATIC attemptToHost AS _BYTE
|
||||||
IF vWatchOn = 1 AND attemptToHost = 0 THEN
|
IF vWatchOn = 1 AND attemptToHost = 0 THEN
|
||||||
IF host& = 0 THEN
|
IF host& = 0 THEN
|
||||||
host& = _OPENHOST("TCP/IP:9000")
|
hostport$ = _TRIM$(STR$(9000 + tempfolderindex))
|
||||||
|
ENVIRON "QB64DEBUGPORT=" + hostport$
|
||||||
|
host& = _OPENHOST("TCP/IP:" + hostport$)
|
||||||
attemptToHost = -1
|
attemptToHost = -1
|
||||||
END IF
|
END IF
|
||||||
END IF
|
END IF
|
||||||
|
@ -4146,7 +4148,7 @@ FUNCTION ide2 (ignore)
|
||||||
|
|
||||||
IF altheld <> 0 AND lastaltheld = 0 THEN
|
IF altheld <> 0 AND lastaltheld = 0 THEN
|
||||||
DO
|
DO
|
||||||
_LIMIT 1000
|
_LIMIT 100
|
||||||
GetInput
|
GetInput
|
||||||
IF _WINDOWHASFOCUS = 0 AND (os$ = "WIN" OR MacOSX = 1) THEN
|
IF _WINDOWHASFOCUS = 0 AND (os$ = "WIN" OR MacOSX = 1) THEN
|
||||||
COLOR 0, 7: _PRINTSTRING (1, 1), menubar$
|
COLOR 0, 7: _PRINTSTRING (1, 1), menubar$
|
||||||
|
@ -4370,7 +4372,7 @@ FUNCTION ide2 (ignore)
|
||||||
'revert to previous menuwhen alt pressed again
|
'revert to previous menuwhen alt pressed again
|
||||||
IF altheld <> 0 AND lastaltheld = 0 THEN
|
IF altheld <> 0 AND lastaltheld = 0 THEN
|
||||||
DO
|
DO
|
||||||
_LIMIT 1000
|
_LIMIT 100
|
||||||
GetInput
|
GetInput
|
||||||
IF _WINDOWHASFOCUS = 0 AND (os$ = "WIN" OR MacOSX = 1) THEN
|
IF _WINDOWHASFOCUS = 0 AND (os$ = "WIN" OR MacOSX = 1) THEN
|
||||||
COLOR 0, 7: _PRINTSTRING (1, 1), menubar$
|
COLOR 0, 7: _PRINTSTRING (1, 1), menubar$
|
||||||
|
@ -6029,7 +6031,7 @@ SUB DebugMode
|
||||||
SCREEN , , 3, 0
|
SCREEN , , 3, 0
|
||||||
COLOR 0, 7: _PRINTSTRING (1, 1), SPACE$(LEN(menubar$))
|
COLOR 0, 7: _PRINTSTRING (1, 1), SPACE$(LEN(menubar$))
|
||||||
m$ = "$DEBUG MODE ACTIVE"
|
m$ = "$DEBUG MODE ACTIVE"
|
||||||
COLOR 2
|
COLOR 0
|
||||||
_PRINTSTRING ((idewx - LEN(m$)) \ 2, 1), m$
|
_PRINTSTRING ((idewx - LEN(m$)) \ 2, 1), m$
|
||||||
|
|
||||||
dummy = DarkenFGBG(1)
|
dummy = DarkenFGBG(1)
|
||||||
|
@ -6037,7 +6039,7 @@ SUB DebugMode
|
||||||
setStatusMessage 1, "Entering $DEBUG mode (ESC to abort)...", 15
|
setStatusMessage 1, "Entering $DEBUG mode (ESC to abort)...", 15
|
||||||
|
|
||||||
IF host& = 0 THEN
|
IF host& = 0 THEN
|
||||||
host& = _OPENHOST("TCP/IP:9000")
|
host& = _OPENHOST("TCP/IP:" + hostport$)
|
||||||
IF host& = 0 THEN
|
IF host& = 0 THEN
|
||||||
dummy = DarkenFGBG(0)
|
dummy = DarkenFGBG(0)
|
||||||
clearStatusWindow 1
|
clearStatusWindow 1
|
||||||
|
@ -6096,13 +6098,8 @@ SUB DebugMode
|
||||||
CASE "me"
|
CASE "me"
|
||||||
program$ = value$
|
program$ = value$
|
||||||
expected$ = lastBinaryGenerated$
|
expected$ = lastBinaryGenerated$
|
||||||
IF LEFT$(program$, 2) = "./" THEN program$ = MID$(program$, 3)
|
p$ = ideztakepath$(program$)
|
||||||
|
p$ = ideztakepath$(expected$)
|
||||||
IF INSTR(_OS$, "WIN") THEN
|
|
||||||
IF INSTR(expected$, "/") = 0 AND INSTR(expected$, "\") = 0 THEN
|
|
||||||
expected$ = getfilepath$(COMMAND$(0)) + expected$
|
|
||||||
END IF
|
|
||||||
END IF
|
|
||||||
|
|
||||||
IF program$ <> expected$ THEN
|
IF program$ <> expected$ THEN
|
||||||
dummy = DarkenFGBG(0)
|
dummy = DarkenFGBG(0)
|
||||||
|
@ -6315,11 +6312,6 @@ SUB DebugMode
|
||||||
COLOR , 4
|
COLOR , 4
|
||||||
setStatusMessage 1, "Error occurred on line" + STR$(l), 13
|
setStatusMessage 1, "Error occurred on line" + STR$(l), 13
|
||||||
PauseMode = -1
|
PauseMode = -1
|
||||||
CASE "call"
|
|
||||||
callstack = callstack + 1
|
|
||||||
onLine$ = STR$(CVL(RIGHT$(value$, 4)))
|
|
||||||
procedure$ = LEFT$(value$, LEN(value$) - 4)
|
|
||||||
'store this in an array and allow it to be inspected
|
|
||||||
END SELECT
|
END SELECT
|
||||||
|
|
||||||
_LIMIT 100
|
_LIMIT 100
|
||||||
|
@ -6340,6 +6332,8 @@ SUB DebugMode
|
||||||
IF INSTR(cmd$, ":") THEN
|
IF INSTR(cmd$, ":") THEN
|
||||||
value$ = MID$(cmd$, INSTR(cmd$, ":") + 1)
|
value$ = MID$(cmd$, INSTR(cmd$, ":") + 1)
|
||||||
cmd$ = LEFT$(cmd$, INSTR(cmd$, ":") - 1)
|
cmd$ = LEFT$(cmd$, INSTR(cmd$, ":") - 1)
|
||||||
|
ELSE
|
||||||
|
value$ = ""
|
||||||
END IF
|
END IF
|
||||||
ELSE
|
ELSE
|
||||||
cmd$ = "": value$ = ""
|
cmd$ = "": value$ = ""
|
||||||
|
@ -6349,6 +6343,7 @@ SUB DebugMode
|
||||||
SendCommand:
|
SendCommand:
|
||||||
cmd$ = cmd$ + endc$
|
cmd$ = cmd$ + endc$
|
||||||
PUT #client&, , cmd$
|
PUT #client&, , cmd$
|
||||||
|
cmd$ = ""
|
||||||
RETURN
|
RETURN
|
||||||
END SUB
|
END SUB
|
||||||
|
|
||||||
|
|
|
@ -5134,7 +5134,14 @@ DO
|
||||||
IF vWatchOn = 1 THEN
|
IF vWatchOn = 1 THEN
|
||||||
PRINT #12, "*__LONG_VWATCH_SUBLEVEL=*__LONG_VWATCH_SUBLEVEL+ 1 ;"
|
PRINT #12, "*__LONG_VWATCH_SUBLEVEL=*__LONG_VWATCH_SUBLEVEL+ 1 ;"
|
||||||
IF subfunc <> "SUB_VWATCH" THEN
|
IF subfunc <> "SUB_VWATCH" THEN
|
||||||
PRINT #12, "qbs_set(__STRING_VWATCH_SUBNAME,qbs_new_txt_len(" + CHR$(34) + subfuncoriginalname$ + CHR$(34) + "," + str2$(LEN(subfuncoriginalname$)) + "));"
|
inclinenump$ = ""
|
||||||
|
IF inclinenumber(inclevel) THEN
|
||||||
|
thisincname$ = getfilepath$(incname$(inclevel))
|
||||||
|
thisincname$ = MID$(incname$(inclevel), LEN(thisincname$) + 1)
|
||||||
|
inclinenump$ = "(" + thisincname$ + "," + STR$(inclinenumber(inclevel)) + ") "
|
||||||
|
END IF
|
||||||
|
|
||||||
|
PRINT #12, "qbs_set(__STRING_VWATCH_SUBNAME,qbs_new_txt_len(" + CHR$(34) + inclinenump$ + subfuncoriginalname$ + CHR$(34) + "," + str2$(LEN(inclinenump$ + subfuncoriginalname$)) + "));"
|
||||||
PRINT #12, "qbs_cleanup(qbs_tmp_base,0);"
|
PRINT #12, "qbs_cleanup(qbs_tmp_base,0);"
|
||||||
PRINT #12, "*__LONG_VWATCH_LINENUMBER=-2; SUB_VWATCH((ptrszint*)vwatch_local_vars);"
|
PRINT #12, "*__LONG_VWATCH_LINENUMBER=-2; SUB_VWATCH((ptrszint*)vwatch_local_vars);"
|
||||||
END IF
|
END IF
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
$CHECKING:OFF
|
$CHECKING:OFF
|
||||||
DIM SHARED AS LONG vwatch_linenumber, vwatch_sublevel
|
DIM SHARED AS LONG vwatch_linenumber, vwatch_sublevel
|
||||||
DIM SHARED AS STRING vwatch_subname
|
DIM SHARED AS STRING vwatch_subname, vwatch_callstack
|
||||||
REDIM SHARED vwatch_breakpoints(0) AS _BYTE
|
REDIM SHARED vwatch_breakpoints(0) AS _BYTE
|
||||||
'next lines are just to avoid "unused variable" warnings:
|
'next lines are just to avoid "unused variable" warnings:
|
||||||
vwatch_linenumber = 0
|
vwatch_linenumber = 0
|
||||||
vwatch_sublevel = 0
|
vwatch_sublevel = 0
|
||||||
vwatch_breakpoints(0) = 0
|
vwatch_breakpoints(0) = 0
|
||||||
vwatch_subname = ""
|
vwatch_subname = ""
|
||||||
|
vwatch_callstack = ""
|
||||||
$CHECKING:ON
|
$CHECKING:ON
|
||||||
|
|
|
@ -2,6 +2,7 @@ $CHECKING:OFF
|
||||||
|
|
||||||
SUB vwatch (localVariables AS _OFFSET)
|
SUB vwatch (localVariables AS _OFFSET)
|
||||||
STATIC AS LONG ide, breakpointCount, timeout, startLevel, lastLine
|
STATIC AS LONG ide, breakpointCount, timeout, startLevel, lastLine
|
||||||
|
STATIC AS LONG callStackLength
|
||||||
STATIC AS _BYTE pauseMode, stepOver, bypass
|
STATIC AS _BYTE pauseMode, stepOver, bypass
|
||||||
STATIC buffer$, endc$
|
STATIC buffer$, endc$
|
||||||
DIM AS LONG i
|
DIM AS LONG i
|
||||||
|
@ -77,8 +78,8 @@ SUB vwatch (localVariables AS _OFFSET)
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
ELSEIF vwatch_linenumber = -2 THEN
|
ELSEIF vwatch_linenumber = -2 THEN
|
||||||
'report a new sub/function has been "entered"
|
'report a new sub/function has been "entered"
|
||||||
cmd$ = "call:" + vwatch_subname + MKL$(lastLine)
|
IF LEN(vwatch_callstack) THEN vwatch_callstack = vwatch_callstack + CHR$(0)
|
||||||
GOSUB SendCommand
|
vwatch_callstack = vwatch_callstack + vwatch_subname$ + ", line" + STR$(lastLine)
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
|
@ -152,6 +153,8 @@ SUB vwatch (localVariables AS _OFFSET)
|
||||||
vwatch_breakpoints(CVL(value$)) = 0
|
vwatch_breakpoints(CVL(value$)) = 0
|
||||||
CASE "clear all breakpoints"
|
CASE "clear all breakpoints"
|
||||||
REDIM vwatch_breakpoints(UBOUND(vwatch_breakpoints)) AS _BYTE
|
REDIM vwatch_breakpoints(UBOUND(vwatch_breakpoints)) AS _BYTE
|
||||||
|
CASE "call stack"
|
||||||
|
'send call stack history"
|
||||||
CASE "local"
|
CASE "local"
|
||||||
i = CVL(value$)
|
i = CVL(value$)
|
||||||
address = localVariables + LEN(address) * i
|
address = localVariables + LEN(address) * i
|
||||||
|
@ -165,10 +168,13 @@ SUB vwatch (localVariables AS _OFFSET)
|
||||||
vwatch_starttimers
|
vwatch_starttimers
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
Connect:
|
Connect:
|
||||||
|
ideport$ = ENVIRON$("QB64DEBUGPORT")
|
||||||
|
IF ideport$ = "" THEN bypass = -1: EXIT SUB
|
||||||
|
|
||||||
start! = TIMER
|
start! = TIMER
|
||||||
DO
|
DO
|
||||||
k& = _KEYHIT
|
k& = _KEYHIT
|
||||||
ide = _OPENCLIENT("TCP/IP:9000:localhost")
|
ide = _OPENCLIENT("TCP/IP:" + ideport$ + ":localhost")
|
||||||
_LIMIT 30
|
_LIMIT 30
|
||||||
LOOP UNTIL k& = 27 OR ide <> 0 OR TIMER - start! > timeout
|
LOOP UNTIL k& = 27 OR ide <> 0 OR TIMER - start! > timeout
|
||||||
IF ide = 0 THEN bypass = -1: EXIT SUB
|
IF ide = 0 THEN bypass = -1: EXIT SUB
|
||||||
|
@ -185,6 +191,8 @@ SUB vwatch (localVariables AS _OFFSET)
|
||||||
IF INSTR(cmd$, ":") THEN
|
IF INSTR(cmd$, ":") THEN
|
||||||
value$ = MID$(cmd$, INSTR(cmd$, ":") + 1)
|
value$ = MID$(cmd$, INSTR(cmd$, ":") + 1)
|
||||||
cmd$ = LEFT$(cmd$, INSTR(cmd$, ":") - 1)
|
cmd$ = LEFT$(cmd$, INSTR(cmd$, ":") - 1)
|
||||||
|
ELSE
|
||||||
|
value$ = ""
|
||||||
END IF
|
END IF
|
||||||
ELSE
|
ELSE
|
||||||
cmd$ = "": value$ = ""
|
cmd$ = "": value$ = ""
|
||||||
|
@ -194,5 +202,6 @@ SUB vwatch (localVariables AS _OFFSET)
|
||||||
SendCommand:
|
SendCommand:
|
||||||
cmd$ = cmd$ + endc$
|
cmd$ = cmd$ + endc$
|
||||||
PUT #ide, , cmd$
|
PUT #ide, , cmd$
|
||||||
|
cmd$ = ""
|
||||||
RETURN
|
RETURN
|
||||||
END SUB
|
END SUB
|
||||||
|
|
Loading…
Reference in a new issue