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 IdeContextHelpSF AS _BYTE
|
||||
|
||||
DIM SHARED host&
|
||||
DIM SHARED host&, hostport$
|
||||
|
||||
DIM SHARED IdeSystem AS LONG
|
||||
'1=Entering text into the main IDE window
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue