1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-06-26 17:10:38 +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:
FellippeHeitor 2021-07-19 00:59:54 -03:00
parent 2f61b9e541
commit de236d4a5f
5 changed files with 35 additions and 23 deletions

View file

@ -11,7 +11,7 @@ DIM SHARED IDEBuildModeChanged
DIM SHARED IdeInfo AS STRING
DIM SHARED IdeContextHelpSF AS _BYTE
DIM SHARED host&
DIM SHARED host&, hostport$
DIM SHARED IdeSystem AS LONG
'1=Entering text into the main IDE window

View file

@ -683,7 +683,9 @@ FUNCTION ide2 (ignore)
STATIC attemptToHost AS _BYTE
IF vWatchOn = 1 AND attemptToHost = 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
END IF
END IF
@ -4146,7 +4148,7 @@ FUNCTION ide2 (ignore)
IF altheld <> 0 AND lastaltheld = 0 THEN
DO
_LIMIT 1000
_LIMIT 100
GetInput
IF _WINDOWHASFOCUS = 0 AND (os$ = "WIN" OR MacOSX = 1) THEN
COLOR 0, 7: _PRINTSTRING (1, 1), menubar$
@ -4370,7 +4372,7 @@ FUNCTION ide2 (ignore)
'revert to previous menuwhen alt pressed again
IF altheld <> 0 AND lastaltheld = 0 THEN
DO
_LIMIT 1000
_LIMIT 100
GetInput
IF _WINDOWHASFOCUS = 0 AND (os$ = "WIN" OR MacOSX = 1) THEN
COLOR 0, 7: _PRINTSTRING (1, 1), menubar$
@ -6029,7 +6031,7 @@ SUB DebugMode
SCREEN , , 3, 0
COLOR 0, 7: _PRINTSTRING (1, 1), SPACE$(LEN(menubar$))
m$ = "$DEBUG MODE ACTIVE"
COLOR 2
COLOR 0
_PRINTSTRING ((idewx - LEN(m$)) \ 2, 1), m$
dummy = DarkenFGBG(1)
@ -6037,7 +6039,7 @@ SUB DebugMode
setStatusMessage 1, "Entering $DEBUG mode (ESC to abort)...", 15
IF host& = 0 THEN
host& = _OPENHOST("TCP/IP:9000")
host& = _OPENHOST("TCP/IP:" + hostport$)
IF host& = 0 THEN
dummy = DarkenFGBG(0)
clearStatusWindow 1
@ -6096,13 +6098,8 @@ SUB DebugMode
CASE "me"
program$ = value$
expected$ = lastBinaryGenerated$
IF LEFT$(program$, 2) = "./" THEN program$ = MID$(program$, 3)
IF INSTR(_OS$, "WIN") THEN
IF INSTR(expected$, "/") = 0 AND INSTR(expected$, "\") = 0 THEN
expected$ = getfilepath$(COMMAND$(0)) + expected$
END IF
END IF
p$ = ideztakepath$(program$)
p$ = ideztakepath$(expected$)
IF program$ <> expected$ THEN
dummy = DarkenFGBG(0)
@ -6315,11 +6312,6 @@ SUB DebugMode
COLOR , 4
setStatusMessage 1, "Error occurred on line" + STR$(l), 13
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
_LIMIT 100
@ -6340,6 +6332,8 @@ SUB DebugMode
IF INSTR(cmd$, ":") THEN
value$ = MID$(cmd$, INSTR(cmd$, ":") + 1)
cmd$ = LEFT$(cmd$, INSTR(cmd$, ":") - 1)
ELSE
value$ = ""
END IF
ELSE
cmd$ = "": value$ = ""
@ -6349,6 +6343,7 @@ SUB DebugMode
SendCommand:
cmd$ = cmd$ + endc$
PUT #client&, , cmd$
cmd$ = ""
RETURN
END SUB

View file

@ -5134,7 +5134,14 @@ DO
IF vWatchOn = 1 THEN
PRINT #12, "*__LONG_VWATCH_SUBLEVEL=*__LONG_VWATCH_SUBLEVEL+ 1 ;"
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, "*__LONG_VWATCH_LINENUMBER=-2; SUB_VWATCH((ptrszint*)vwatch_local_vars);"
END IF

View file

@ -1,10 +1,11 @@
$CHECKING:OFF
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
'next lines are just to avoid "unused variable" warnings:
vwatch_linenumber = 0
vwatch_sublevel = 0
vwatch_breakpoints(0) = 0
vwatch_subname = ""
vwatch_callstack = ""
$CHECKING:ON

View file

@ -2,6 +2,7 @@ $CHECKING:OFF
SUB vwatch (localVariables AS _OFFSET)
STATIC AS LONG ide, breakpointCount, timeout, startLevel, lastLine
STATIC AS LONG callStackLength
STATIC AS _BYTE pauseMode, stepOver, bypass
STATIC buffer$, endc$
DIM AS LONG i
@ -77,8 +78,8 @@ SUB vwatch (localVariables AS _OFFSET)
EXIT SUB
ELSEIF vwatch_linenumber = -2 THEN
'report a new sub/function has been "entered"
cmd$ = "call:" + vwatch_subname + MKL$(lastLine)
GOSUB SendCommand
IF LEN(vwatch_callstack) THEN vwatch_callstack = vwatch_callstack + CHR$(0)
vwatch_callstack = vwatch_callstack + vwatch_subname$ + ", line" + STR$(lastLine)
EXIT SUB
END IF
@ -152,6 +153,8 @@ SUB vwatch (localVariables AS _OFFSET)
vwatch_breakpoints(CVL(value$)) = 0
CASE "clear all breakpoints"
REDIM vwatch_breakpoints(UBOUND(vwatch_breakpoints)) AS _BYTE
CASE "call stack"
'send call stack history"
CASE "local"
i = CVL(value$)
address = localVariables + LEN(address) * i
@ -165,10 +168,13 @@ SUB vwatch (localVariables AS _OFFSET)
vwatch_starttimers
EXIT SUB
Connect:
ideport$ = ENVIRON$("QB64DEBUGPORT")
IF ideport$ = "" THEN bypass = -1: EXIT SUB
start! = TIMER
DO
k& = _KEYHIT
ide = _OPENCLIENT("TCP/IP:9000:localhost")
ide = _OPENCLIENT("TCP/IP:" + ideport$ + ":localhost")
_LIMIT 30
LOOP UNTIL k& = 27 OR ide <> 0 OR TIMER - start! > timeout
IF ide = 0 THEN bypass = -1: EXIT SUB
@ -185,6 +191,8 @@ SUB vwatch (localVariables AS _OFFSET)
IF INSTR(cmd$, ":") THEN
value$ = MID$(cmd$, INSTR(cmd$, ":") + 1)
cmd$ = LEFT$(cmd$, INSTR(cmd$, ":") - 1)
ELSE
value$ = ""
END IF
ELSE
cmd$ = "": value$ = ""
@ -194,5 +202,6 @@ SUB vwatch (localVariables AS _OFFSET)
SendCommand:
cmd$ = cmd$ + endc$
PUT #ide, , cmd$
cmd$ = ""
RETURN
END SUB