Refactor `GDBProcess` hierarchy to improve portability
Spawning and managing an OS process is tightly bound to the
underlaying platform (both, smalltalk-wise and OS-wise). To
improve portability and clarity of the code, rename
`GDBUnixProcess` and `GDBWindowsProcess` to `GDBStXUnixProcess`
and `GDBStxWindowsProcess`.
This commit also includes a new abstract superclass (a `GDBLocalProcess`)
for all specialisation spawning and managing a GDB process running on
the same host as `jv:libgdbs` code.
--- a/GDBConnection.st Thu Oct 11 09:55:43 2018 +0200
+++ b/GDBConnection.st Sat Oct 20 07:48:11 2018 +0100
@@ -194,7 +194,7 @@
].
self eventDispatchLoop.
] newProcess.
- eventDispatchProcess name:('GDB Event dispatcher (%1)' bindWith:process pid).
+ eventDispatchProcess name:('GDB Event dispatcher (%1)' bindWith:process id).
eventDispatchProcess priority:Processor userBackgroundPriority.
eventDispatchProcess addExitAction:[
eventDispatchProcess := nil.
@@ -207,7 +207,7 @@
].
"Created: / 02-06-2014 / 22:51:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 02-10-2018 / 13:34:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 19-10-2018 / 10:11:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
eventDispatchStop
@@ -288,7 +288,7 @@
].
self eventPumpLoop
] newProcess.
- eventPumpProcess name:('GDB Event pump (%1)' bindWith:process pid).
+ eventPumpProcess name:('GDB Event pump (%1)' bindWith:process id).
eventPumpProcess priority:Processor userBackgroundPriority.
eventPumpProcess addExitAction:[
TraceEvents ifTrue:[
@@ -300,7 +300,7 @@
].
"Created: / 02-06-2014 / 22:38:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 20-06-2014 / 21:37:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 19-10-2018 / 10:07:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
eventPumpStop
@@ -365,15 +365,11 @@
!
release
- | pid |
- pid := process pid.
- (pid notNil and:[pid > 1]) ifTrue:[
- OperatingSystem sendSignal:(OperatingSystem sigTERM) to:process pid.
- ]
+ process release
"Created: / 26-05-2014 / 21:30:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 05-07-2014 / 22:20:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 12-01-2018 / 15:09:00 / jv"
+ "Modified: / 20-10-2018 / 07:10:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
released: status
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/GDBLocalProcess.st Sat Oct 20 07:48:11 2018 +0100
@@ -0,0 +1,109 @@
+"
+jv:libgdbs - GNU Debugger Interface Library
+Copyright (C) 2015-now Jan Vrany
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+"
+"{ Package: 'jv:libgdbs' }"
+
+"{ NameSpace: Smalltalk }"
+
+GDBProcess subclass:#GDBLocalProcess
+ instanceVariableNames:'pid'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'GDB-Private'
+!
+
+!GDBLocalProcess class methodsFor:'documentation'!
+
+copyright
+"
+jv:libgdbs - GNU Debugger Interface Library
+Copyright (C) 2015-now Jan Vrany
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+"
+!
+
+documentation
+"
+ GDBLocalProcess is a specialization of GDBProcess that spawns a
+ local GDB process on a host machine. Spawning a running of GDB
+ process is ully managed by an (sub)instance of `GDBLocalProcess`
+ Due to platform differences, there are concrete variants for
+ different platforms.
+
+ [author:]
+ Jan Vrany <jan.vrany@fit.cvut.cz>
+
+ [instance variables:]
+
+ [class variables:]
+
+ [see also:]
+ GDBStXUnixProcess
+ GDBStXWindowsProcess
+ GDBRemoteProcess
+
+"
+! !
+
+!GDBLocalProcess methodsFor:'accessing'!
+
+id
+ "Return a string identification of this GDBProcess.
+ Used for debugging purposes only."
+
+ ^ pid
+
+ "Created: / 19-10-2018 / 10:09:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 20-10-2018 / 06:53:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!GDBLocalProcess methodsFor:'initialization & release'!
+
+release
+ (pid notNil and:[pid > 1]) ifTrue:[
+ OperatingSystem sendSignal:(OperatingSystem sigTERM) to: pid.
+ ].
+
+ "Created: / 20-10-2018 / 07:12:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!GDBLocalProcess methodsFor:'private'!
+
+exited: status
+ "Called when spawn GDB process terminates for whatever reason"
+ pid := nil.
+ connection released: status
+
+ "Created: / 20-06-2014 / 21:35:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 12-01-2018 / 21:50:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (comment): / 17-10-2018 / 22:30:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- a/GDBProcess.st Thu Oct 11 09:55:43 2018 +0200
+++ b/GDBProcess.st Sat Oct 20 07:48:11 2018 +0100
@@ -21,7 +21,7 @@
"{ NameSpace: Smalltalk }"
Object subclass:#GDBProcess
- instanceVariableNames:'pid connection debuggerInput debuggerOutput'
+ instanceVariableNames:'connection debuggerInput debuggerOutput'
classVariableNames:''
poolDictionaries:''
category:'GDB-Private'
@@ -48,21 +48,49 @@
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
"
+!
+
+documentation
+"
+ GDBProcess is represents a running GDB and provides access
+ to MI and CLI channels (see #debuggerIput / #debuggerOutput).
+
+ [author:]
+ Jan Vrany <jan.vrany@fit.cvut.cz>
+
+ [instance variables:]
+
+ [class variables:]
+
+ [see also:]
+ GDBStXUnixProcess
+ GDBStXWindowsProcess
+
+"
! !
!GDBProcess class methodsFor:'instance creation'!
new
- OperatingSystem isUNIXlike ifTrue:[ ^ GDBUnixProcess basicNew initialize].
- OperatingSystem isMSWINDOWSlike ifTrue:[ ^ GDBWindowsProcess basicNew initialize].
- GDBError raiseErrorString: 'Unssuported operating system'.
+ self == GDBProcess ifTrue:[
+ Smalltalk isSmalltalkX ifTrue:[
+ OperatingSystem isUNIXlike ifTrue:[
+ ^ GDBStXUnixProcess basicNew initialize
+ ].
+ OperatingSystem isMSWINDOWSlike ifTrue:[
+ ^ GDBStXWindowsProcess basicNew initialize
+ ]
+ ].
+ GDBError raiseErrorString:'Unsuported platform'.
+ ] ifFalse:[
+ ^ super new.
+ ].
"
- GDBProcess new release.
- "
+ GDBProcess new release."
- "Modified: / 16-12-2017 / 00:10:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified (comment): / 11-01-2018 / 23:02:11 / jv"
+ "Modified: / 19-10-2018 / 10:03:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!GDBProcess class methodsFor:'accessing'!
@@ -134,43 +162,76 @@
!
consoleInput
+ "Return a write stream on debugger's CLI channel. CLI commands
+ should be written here. If this process does not have a CLI
+ channel opened, `nil` is returned. In this case, CLI must be
+ emulated - if required. See `-interpreter-exec` MI command.
+
+ CLI channel is generally available only on Smalltalk/X and only
+ on UNIX platform where this stream points to TTY."
+
^ nil
"Created: / 02-06-2017 / 23:35:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 15-12-2017 / 23:58:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (comment): / 17-10-2018 / 22:20:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
consoleOutput
+ "Return a read stream on debugger's CLI channel. CLI output
+ should be read from. If this process does not have a CLI
+ channel opened, `nil` is returned. In this case, CLI must be
+ emulated - if required.
+
+ CLI channel is generally available only on Smalltalk/X and only
+ on UNIX platform where this stream points to TTY."
+
^ nil
"Created: / 02-06-2017 / 23:35:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 15-12-2017 / 23:58:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (comment): / 17-10-2018 / 22:21:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
debuggerInput
- "raise an error: must be redefined in concrete subclass(es)"
+ "Return a write stream on debugger's MI channel. (MI) commands
+ should be written there."
^ debuggerInput
"Modified: / 15-12-2017 / 23:58:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (comment): / 17-10-2018 / 22:14:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
debuggerOutput
- "raise an error: must be redefined in concrete subclass(es)"
+ "Return read stream on debuugger's MI channel. Command responses
+ and events should be read from here"
^ debuggerOutput
"Modified: / 15-12-2017 / 23:58:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (comment): / 17-10-2018 / 22:15:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
-nativeTargetFeatures
+id
+ "Return a string identification of this GDBProcess.
+ Used for debugging purposes only."
+
^ self subclassResponsibility
- "Created: / 09-04-2018 / 15:40:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Created: / 19-10-2018 / 10:08:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
-pid
- ^ pid
+nativeTargetFeatures
+ "Return default native target features. This is used when
+ used GDB does not support =target-connected and =target-disconnected
+ events."
+
+ "/ Be conservative and report no features at all...
+ ^ #()
+
+ "Created: / 09-04-2018 / 15:40:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (comment): / 17-10-2018 / 22:12:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!GDBProcess methodsFor:'initialization & release'!
@@ -181,16 +242,6 @@
^ self subclassResponsibility
! !
-!GDBProcess methodsFor:'private'!
-
-exited: status
- pid := nil.
- connection released: status
-
- "Created: / 20-06-2014 / 21:35:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 12-01-2018 / 21:50:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
!GDBProcess class methodsFor:'documentation'!
version_HG
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/GDBRemoteProcess.st Sat Oct 20 07:48:11 2018 +0100
@@ -0,0 +1,124 @@
+"
+jv:libgdbs - GNU Debugger Interface Library
+Copyright (C) 2015-now Jan Vrany
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+"
+"{ Package: 'jv:libgdbs' }"
+
+"{ NameSpace: Smalltalk }"
+
+GDBProcess subclass:#GDBRemoteProcess
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ category:'GDB-Private'
+!
+
+!GDBRemoteProcess class methodsFor:'documentation'!
+
+copyright
+"
+jv:libgdbs - GNU Debugger Interface Library
+Copyright (C) 2015-now Jan Vrany
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+"
+!
+
+documentation
+"
+ A GDBRemoteProcess represent a GDB process external to libgdbs. This means
+ the user us responsible for launching the actuall GDB and setting up
+ a connection to its MI channel:
+
+ | process debugger |
+
+ process := GDBRemoteProcess new.
+ process debuggerInput: miChannel writeStream.
+ process debuggerOutput: miChannel readStream.
+ debugger := GDBDebugger newWithProcess: process.
+
+ Onw way to use this might be to run GDB through
+ `socat` [1], exposing it's MI channel over TCP socket:
+
+ socat TCP4-LISTEN:1234 EXEC:'gdb -i mi2'
+
+ This is useful for example when host running libgdbs
+ does not have suitable GDB installed or on environments
+ where no 'native' implementation of `GDBProcess` (such as
+ `GDBStXUnixProcess`) exists (such as Bee Smalltalk)
+
+ [author:]
+ Jan Vrany <jan.vrany@fit.cvut.cz>
+
+ [instance variables:]
+
+ [class variables:]
+
+ [see also:]
+ GDBLocalProcess
+
+"
+! !
+
+!GDBRemoteProcess methodsFor:'accessing'!
+
+connection:aGDBConnection
+ self assert: debuggerInput notNil.
+ self assert: debuggerOutput notNil.
+
+ super connection:aGDBConnection
+
+ "Created: / 17-10-2018 / 22:37:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+debuggerInput:aWriteStream
+ "Set a write stream on debugger's MI channel. See #debuggerInput."
+
+ debuggerInput := aWriteStream.
+
+ "Modified (comment): / 17-10-2018 / 22:36:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+debuggerOutput:aReadStream
+ "Set a read stream on debugger's MI channel. See #debuggerOutput."
+
+ debuggerOutput := aReadStream.
+
+ "Modified (comment): / 17-10-2018 / 22:35:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+id
+ "Return a string identification of this GDBProcess.
+ Used for debugging purposes only."
+
+ ^ 'remote'
+
+ "Created: / 19-10-2018 / 10:10:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/GDBStXUnixProcess.st Sat Oct 20 07:48:11 2018 +0100
@@ -0,0 +1,163 @@
+"
+jv:libgdbs - GNU Debugger Interface Library
+Copyright (C) 2015-now Jan Vrany
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+"
+"{ Package: 'jv:libgdbs' }"
+
+"{ NameSpace: Smalltalk }"
+
+GDBLocalProcess subclass:#GDBStXUnixProcess
+ instanceVariableNames:'debuggerPTY consolePTY'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'GDB-Private'
+!
+
+!GDBStXUnixProcess class methodsFor:'documentation'!
+
+copyright
+"
+jv:libgdbs - GNU Debugger Interface Library
+Copyright (C) 2015-now Jan Vrany
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+"
+!
+
+documentation
+"
+
+
+ [author:]
+ Jan Vrany <jan.vrany@fit.cvut.cz>
+
+ [instance variables:]
+
+ [class variables:]
+
+ [see also:]
+
+"
+! !
+
+!GDBStXUnixProcess methodsFor:'accessing'!
+
+consoleInput
+ ^ consolePTY master
+
+ "Created: / 02-06-2017 / 23:36:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+consoleOutput
+ ^ consolePTY master
+
+ "Created: / 02-06-2017 / 23:36:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+nativeTargetFeatures
+ ^ #('async')
+
+ "Created: / 09-04-2018 / 15:40:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!GDBStXUnixProcess methodsFor:'initialization & release'!
+
+initialize
+ | exe conpty dbgpty args |
+
+ exe := self class gdbExecutable.
+ (exe isNil or:[ exe asFilename isExecutable not ]) ifTrue:[
+ GDBError raiseErrorString: 'Could not find gdb, please set path to gdb using GDBProcess class >> gdbExecutable:'.
+ ^ self.
+ ].
+
+ conpty := GDBPTY new.
+ dbgpty := GDBPTY new.
+ dbgpty setLocalEcho: false.
+ dbgpty setOutputCRLF: false.
+
+ args := (Array new: 6)
+ at: 1 put: exe;
+ at: 2 put: '-q';
+ at: 3 put: '-ex';
+ at: 4 put: 'new-ui mi ', dbgpty name;
+ at: 5 put: '-ex';
+ at: 6 put: 'set pagination off';
+ yourself.
+ Processor
+ monitor:[
+ pid := OperatingSystem
+ exec:args first
+ withArguments:args
+ environment:OperatingSystem getEnvironment
+ fileDescriptors:{
+ conpty slave fileDescriptor.
+ conpty slave fileDescriptor.
+ conpty slave fileDescriptor
+ }
+ fork:true
+ newPgrp:false
+ inDirectory:Filename currentDirectory
+ showWindow: false.
+ consolePTY := conpty.
+ debuggerPTY := dbgpty.
+ debuggerInput := debuggerOutput := debuggerPTY master.
+ pid.
+ ]
+ action:[:stat | self exited:stat ].
+ pid isNil ifTrue:[
+ conpty close.
+ dbgpty close.
+ self error:'Failed to launch gdb'.
+ ].
+
+ "Modified: / 03-10-2018 / 22:22:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+release
+ debuggerPTY notNil ifTrue:[
+ debuggerPTY release.
+ debuggerInput := debuggerOutput := nil
+ ].
+ consolePTY notNil ifTrue:[
+ consolePTY release.
+ ].
+ super release
+
+ "Created: / 02-06-2017 / 23:33:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 15-12-2017 / 23:59:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!GDBStXUnixProcess class methodsFor:'documentation'!
+
+version_HG
+
+ ^ '$Changeset: <not expanded> $'
+! !
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/GDBStXWindowsProcess.st Sat Oct 20 07:48:11 2018 +0100
@@ -0,0 +1,202 @@
+"
+jv:libgdbs - GNU Debugger Interface Library
+Copyright (C) 2015-now Jan Vrany
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+"
+"{ Package: 'jv:libgdbs' }"
+
+"{ NameSpace: Smalltalk }"
+
+GDBLocalProcess subclass:#GDBStXWindowsProcess
+ instanceVariableNames:'debuggerError errorPumpProcess'
+ classVariableNames:''
+ poolDictionaries:'GDBDebugFlags'
+ category:'GDB-Private'
+!
+
+!GDBStXWindowsProcess class methodsFor:'documentation'!
+
+copyright
+"
+jv:libgdbs - GNU Debugger Interface Library
+Copyright (C) 2015-now Jan Vrany
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+"
+!
+
+documentation
+"
+ documentation to be added.
+
+ [author:]
+ Jan Vrany <jan.vrany@fit.cvut.cz>
+
+ [instance variables:]
+
+ [class variables:]
+
+ [see also:]
+
+"
+! !
+
+!GDBStXWindowsProcess methodsFor:'error pump'!
+
+errorPumpLoop
+ [ debuggerError atEnd ] whileFalse:[
+ debuggerError readWait.
+ debuggerError atEnd ifFalse:[
+ | line |
+
+ line := debuggerError nextLine.
+ line notNil ifTrue:[
+ Logger log: line severity: #error facility: 'GDB'
+ ].
+ ].
+ ]
+
+ "Created: / 15-01-2018 / 09:31:39 / jv"
+!
+
+errorPumpStart
+ errorPumpProcess isNil ifTrue:[
+ errorPumpProcess := [
+ TraceEvents ifTrue:[
+ Logger log: 'error pump: starting' severity: #trace facility: 'GDB'
+ ].
+ self errorPumpLoop
+ ] newProcess.
+ errorPumpProcess name:('GDB Error pump (%1)' bindWith: self id).
+ errorPumpProcess priority:Processor userBackgroundPriority.
+ errorPumpProcess addExitAction:[
+ TraceEvents ifTrue:[
+ Logger log: 'error pump: terminated' severity: #trace facility: 'GDB'
+ ].
+ errorPumpProcess := nil.
+ ].
+ errorPumpProcess resume.
+ ].
+
+ "Created: / 15-01-2018 / 09:28:06 / jv"
+ "Modified: / 20-10-2018 / 06:53:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+errortPumpStop
+ | t |
+
+ t := errorPumpProcess.
+ (t notNil and:[ t isDead not]) ifTrue:[
+ errorPumpProcess := nil.
+ t terminate.
+ "/ raise its prio to make it terminate quickly
+ t priority:(Processor userSchedulingPriority + 1)
+ ].
+
+ "Created: / 15-01-2018 / 09:29:49 / jv"
+! !
+
+!GDBStXWindowsProcess methodsFor:'initialization & release'!
+
+initialize
+ | exe inputPipe input outputPipe output errorPipe error args |
+
+ exe := self class gdbExecutable.
+ (exe isNil or:[ exe asFilename isExecutable not ]) ifTrue:[
+ GDBError raiseErrorString: 'Could not find gdb, please set path to gdb using GDBProcess class >> gdbExecutable:'.
+ ^ self.
+ ].
+
+ inputPipe := NonPositionableExternalStream makePipe.
+ input := inputPipe second.
+ outputPipe := NonPositionableExternalStream makePipe.
+ output := outputPipe first.
+ errorPipe := NonPositionableExternalStream makePipe.
+ error := outputPipe first.
+
+ args := (Array new: 7)
+ at: 1 put: exe;
+ at: 2 put: '-q';
+ at: 3 put: '-nx';
+ at: 4 put: '--interpreter';
+ at: 5 put: 'mi2';
+ at: 6 put: '-ex';
+ at: 7 put: 'set new-console on';
+ yourself.
+ Processor
+ monitor:[
+ pid := OperatingSystem
+ exec:args first
+ withArguments:args
+ environment:OperatingSystem getEnvironment
+ fileDescriptors: (Array
+ with: inputPipe first fileDescriptor
+ with: outputPipe second fileDescriptor
+ with: errorPipe second fileDescriptor
+ )
+ fork:true
+ newPgrp:false
+ inDirectory:Filename currentDirectory
+ showWindow: false.
+ debuggerInput := input.
+ debuggerOutput := output.
+ debuggerError := error.
+ pid.
+ ]
+ action:[:stat | self exited:stat. ].
+ inputPipe first close.
+ outputPipe second close.
+ errorPipe second close.
+ pid isNil ifTrue:[
+ input close.
+ output close.
+ error close.
+ self error:'Failed to launch gdb'.
+ ].
+
+ "Created: / 12-12-2017 / 21:04:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 15-01-2018 / 09:35:03 / jv"
+ "Modified: / 03-10-2018 / 22:22:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+release
+ pid := connection := nil.
+ debuggerInput notNil ifTrue:[ debuggerInput close ].
+ debuggerOutput notNil ifTrue:[ debuggerOutput close ].
+
+ "Created: / 20-06-2014 / 21:35:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 15-12-2017 / 23:59:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!GDBStXWindowsProcess class methodsFor:'documentation'!
+
+version_HG
+
+ ^ '$Changeset: <not expanded> $'
+! !
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/GDBTargetConnectedEvent.st Sat Oct 20 07:48:11 2018 +0100
@@ -0,0 +1,58 @@
+"
+jv:libgdbs - GNU Debugger Interface Library
+Copyright (C) 2015-now Jan Vrany
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+"
+"{ Package: 'jv:libgdbs' }"
+
+"{ NameSpace: Smalltalk }"
+
+GDBNotificationEvent subclass:#GDBTargetConnectedEvent
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ category:'GDB-Core-Events'
+!
+
+!GDBTargetConnectedEvent class methodsFor:'documentation'!
+
+copyright
+"
+jv:libgdbs - GNU Debugger Interface Library
+Copyright (C) 2015-now Jan Vrany
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+"
+! !
+
+!GDBTargetConnectedEvent methodsFor:'accessing'!
+
+type
+ ^ 'target-connected'
+! !
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/GDBTargetDisonnectedEvent.st Sat Oct 20 07:48:11 2018 +0100
@@ -0,0 +1,52 @@
+"
+jv:libgdbs - GNU Debugger Interface Library
+Copyright (C) 2015-now Jan Vrany
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+"
+"{ Package: 'jv:libgdbs' }"
+
+"{ NameSpace: Smalltalk }"
+
+GDBNotificationEvent subclass:#GDBTargetDisonnectedEvent
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ category:'GDB-Core-Events'
+!
+
+!GDBTargetDisonnectedEvent class methodsFor:'documentation'!
+
+copyright
+"
+jv:libgdbs - GNU Debugger Interface Library
+Copyright (C) 2015-now Jan Vrany
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+"
+! !
+
--- a/GDBUnixProcess.st Thu Oct 11 09:55:43 2018 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,147 +0,0 @@
-"
-jv:libgdbs - GNU Debugger Interface Library
-Copyright (C) 2015-now Jan Vrany
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Lesser General Public
-License as published by the Free Software Foundation; either
-version 2.1 of the License.
-
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-"
-"{ Package: 'jv:libgdbs' }"
-
-"{ NameSpace: Smalltalk }"
-
-GDBProcess subclass:#GDBUnixProcess
- instanceVariableNames:'debuggerPTY consolePTY'
- classVariableNames:''
- poolDictionaries:''
- category:'GDB-Private'
-!
-
-!GDBUnixProcess class methodsFor:'documentation'!
-
-copyright
-"
-jv:libgdbs - GNU Debugger Interface Library
-Copyright (C) 2015-now Jan Vrany
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Lesser General Public
-License as published by the Free Software Foundation; either
-version 2.1 of the License.
-
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-"
-! !
-
-!GDBUnixProcess methodsFor:'accessing'!
-
-consoleInput
- ^ consolePTY master
-
- "Created: / 02-06-2017 / 23:36:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-consoleOutput
- ^ consolePTY master
-
- "Created: / 02-06-2017 / 23:36:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-nativeTargetFeatures
- ^ #('async')
-
- "Created: / 09-04-2018 / 15:40:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!GDBUnixProcess methodsFor:'initialization & release'!
-
-initialize
- | exe conpty dbgpty args |
-
- exe := self class gdbExecutable.
- (exe isNil or:[ exe asFilename isExecutable not ]) ifTrue:[
- GDBError raiseErrorString: 'Could not find gdb, please set path to gdb using GDBProcess class >> gdbExecutable:'.
- ^ self.
- ].
-
- conpty := GDBPTY new.
- dbgpty := GDBPTY new.
- dbgpty setLocalEcho: false.
- dbgpty setOutputCRLF: false.
-
- args := (Array new: 6)
- at: 1 put: exe;
- at: 2 put: '-q';
- at: 3 put: '-ex';
- at: 4 put: 'new-ui mi ', dbgpty name;
- at: 5 put: '-ex';
- at: 6 put: 'set pagination off';
- yourself.
- Processor
- monitor:[
- pid := OperatingSystem
- exec:args first
- withArguments:args
- environment:OperatingSystem getEnvironment
- fileDescriptors:{
- conpty slave fileDescriptor.
- conpty slave fileDescriptor.
- conpty slave fileDescriptor
- }
- fork:true
- newPgrp:false
- inDirectory:Filename currentDirectory
- showWindow: false.
- consolePTY := conpty.
- debuggerPTY := dbgpty.
- debuggerInput := debuggerOutput := debuggerPTY master.
- pid.
- ]
- action:[:stat | self exited:stat ].
- pid isNil ifTrue:[
- conpty close.
- dbgpty close.
- self error:'Failed to launch gdb'.
- ].
-
- "Modified: / 03-10-2018 / 22:22:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-release
- debuggerPTY notNil ifTrue:[
- debuggerPTY release.
- debuggerInput := debuggerOutput := nil
- ].
- consolePTY notNil ifTrue:[
- consolePTY release.
- ].
- super release
-
- "Created: / 02-06-2017 / 23:33:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 15-12-2017 / 23:59:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!GDBUnixProcess class methodsFor:'documentation'!
-
-version_HG
-
- ^ '$Changeset: <not expanded> $'
-! !
-
--- a/GDBWindowsProcess.st Thu Oct 11 09:55:43 2018 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,193 +0,0 @@
-"
-jv:libgdbs - GNU Debugger Interface Library
-Copyright (C) 2015-now Jan Vrany
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Lesser General Public
-License as published by the Free Software Foundation; either
-version 2.1 of the License.
-
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-"
-"{ Package: 'jv:libgdbs' }"
-
-"{ NameSpace: Smalltalk }"
-
-GDBProcess subclass:#GDBWindowsProcess
- instanceVariableNames:'debuggerError errorPumpProcess'
- classVariableNames:''
- poolDictionaries:'GDBDebugFlags'
- category:'GDB-Private'
-!
-
-!GDBWindowsProcess class methodsFor:'documentation'!
-
-copyright
-"
-jv:libgdbs - GNU Debugger Interface Library
-Copyright (C) 2015-now Jan Vrany
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Lesser General Public
-License as published by the Free Software Foundation; either
-version 2.1 of the License.
-
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-"
-! !
-
-!GDBWindowsProcess methodsFor:'accessing'!
-
-nativeTargetFeatures
- ^ #()
-
- "Created: / 09-04-2018 / 15:41:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!GDBWindowsProcess methodsFor:'error pump'!
-
-errorPumpLoop
- [ debuggerError atEnd ] whileFalse:[
- debuggerError readWait.
- debuggerError atEnd ifFalse:[
- | line |
-
- line := debuggerError nextLine.
- line notNil ifTrue:[
- Logger log: line severity: #error facility: 'GDB'
- ].
- ].
- ]
-
- "Created: / 15-01-2018 / 09:31:39 / jv"
-!
-
-errorPumpStart
- errorPumpProcess isNil ifTrue:[
- errorPumpProcess := [
- TraceEvents ifTrue:[
- Logger log: 'error pump: starting' severity: #trace facility: 'GDB'
- ].
- self errorPumpLoop
- ] newProcess.
- errorPumpProcess name:('GDB Error pump (%1)' bindWith:pid pid).
- errorPumpProcess priority:Processor userBackgroundPriority.
- errorPumpProcess addExitAction:[
- TraceEvents ifTrue:[
- Logger log: 'error pump: terminated' severity: #trace facility: 'GDB'
- ].
- errorPumpProcess := nil.
- ].
- errorPumpProcess resume.
- ].
-
- "Created: / 15-01-2018 / 09:28:06 / jv"
-!
-
-errortPumpStop
- | t |
-
- t := errorPumpProcess.
- (t notNil and:[ t isDead not]) ifTrue:[
- errorPumpProcess := nil.
- t terminate.
- "/ raise its prio to make it terminate quickly
- t priority:(Processor userSchedulingPriority + 1)
- ].
-
- "Created: / 15-01-2018 / 09:29:49 / jv"
-! !
-
-!GDBWindowsProcess methodsFor:'initialization & release'!
-
-initialize
- | exe inputPipe input outputPipe output errorPipe error args |
-
- exe := self class gdbExecutable.
- (exe isNil or:[ exe asFilename isExecutable not ]) ifTrue:[
- GDBError raiseErrorString: 'Could not find gdb, please set path to gdb using GDBProcess class >> gdbExecutable:'.
- ^ self.
- ].
-
- inputPipe := NonPositionableExternalStream makePipe.
- input := inputPipe second.
- outputPipe := NonPositionableExternalStream makePipe.
- output := outputPipe first.
- errorPipe := NonPositionableExternalStream makePipe.
- error := outputPipe first.
-
- args := (Array new: 7)
- at: 1 put: exe;
- at: 2 put: '-q';
- at: 3 put: '-nx';
- at: 4 put: '--interpreter';
- at: 5 put: 'mi2';
- at: 6 put: '-ex';
- at: 7 put: 'set new-console on';
- yourself.
- Processor
- monitor:[
- pid := OperatingSystem
- exec:args first
- withArguments:args
- environment:OperatingSystem getEnvironment
- fileDescriptors: (Array
- with: inputPipe first fileDescriptor
- with: outputPipe second fileDescriptor
- with: errorPipe second fileDescriptor
- )
- fork:true
- newPgrp:false
- inDirectory:Filename currentDirectory
- showWindow: false.
- debuggerInput := input.
- debuggerOutput := output.
- debuggerError := error.
- pid.
- ]
- action:[:stat | self exited:stat. ].
- inputPipe first close.
- outputPipe second close.
- errorPipe second close.
- pid isNil ifTrue:[
- input close.
- output close.
- error close.
- self error:'Failed to launch gdb'.
- ].
-
- "Created: / 12-12-2017 / 21:04:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 15-01-2018 / 09:35:03 / jv"
- "Modified: / 03-10-2018 / 22:22:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-release
- pid := connection := nil.
- debuggerInput notNil ifTrue:[ debuggerInput close ].
- debuggerOutput notNil ifTrue:[ debuggerOutput close ].
-
- "Created: / 20-06-2014 / 21:35:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 15-12-2017 / 23:59:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!GDBWindowsProcess class methodsFor:'documentation'!
-
-version_HG
-
- ^ '$Changeset: <not expanded> $'
-! !
-
--- a/Make.proto Thu Oct 11 09:55:43 2018 +0200
+++ b/Make.proto Sat Oct 20 07:48:11 2018 +0100
@@ -34,7 +34,7 @@
# add the path(es) here:,
# ********** OPTIONAL: MODIFY the next lines ***
# LOCALINCLUDES=-Ifoo -Ibar
-LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/goodies/announcements -I$(INCLUDE_TOP)/stx/goodies/magritte -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libbasic2 -I$(INCLUDE_TOP)/stx/libtool -I$(INCLUDE_TOP)/stx/libview2 -I$(INCLUDE_TOP)/stx/libwidg
+LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/goodies/announcements -I$(INCLUDE_TOP)/stx/goodies/magritte -I$(INCLUDE_TOP)/stx/goodies/refactoryBrowser/lint -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libbasic2 -I$(INCLUDE_TOP)/stx/libtool -I$(INCLUDE_TOP)/stx/libview2 -I$(INCLUDE_TOP)/stx/libwidg
# if you need any additional defines for embedded C code,
@@ -103,10 +103,14 @@
prereq:
cd $(TOP)/libbasic && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
cd $(TOP)/goodies/announcements && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ cd $(TOP)/goodies/refactoryBrowser/helpers && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ cd $(TOP)/goodies/refactoryBrowser/parser && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
cd $(TOP)/libbasic2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
cd $(TOP)/libview && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
cd $(TOP)/libview2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ cd $(TOP)/goodies/refactoryBrowser/browser && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
cd $(TOP)/libwidg && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ cd $(TOP)/goodies/refactoryBrowser/lint && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
cd $(TOP)/goodies/magritte && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
@@ -169,12 +173,14 @@
$(OUTDIR)GDBDebuggerObject.$(O) GDBDebuggerObject.$(C) GDBDebuggerObject.$(H): GDBDebuggerObject.st $(INCLUDE_TOP)/jv/libgdbs/GDBObject.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBInternalEvent.$(O) GDBInternalEvent.$(C) GDBInternalEvent.$(H): GDBInternalEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBInvalidObjectError.$(O) GDBInvalidObjectError.$(C) GDBInvalidObjectError.$(H): GDBInvalidObjectError.st $(INCLUDE_TOP)/jv/libgdbs/GDBError.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)GDBLocalProcess.$(O) GDBLocalProcess.$(C) GDBLocalProcess.$(H): GDBLocalProcess.st $(INCLUDE_TOP)/jv/libgdbs/GDBProcess.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBMICommand.$(O) GDBMICommand.$(C) GDBMICommand.$(H): GDBMICommand.st $(INCLUDE_TOP)/jv/libgdbs/GDBCommand.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBMIParser.$(O) GDBMIParser.$(C) GDBMIParser.$(H): GDBMIParser.st $(INCLUDE_TOP)/jv/libgdbs/GDBCommandStatus.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBMITracer.$(O) GDBMITracer.$(C) GDBMITracer.$(H): GDBMITracer.st $(INCLUDE_TOP)/jv/libgdbs/GDBDebugFlags.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBMemoryDump.$(O) GDBMemoryDump.$(C) GDBMemoryDump.$(H): GDBMemoryDump.st $(INCLUDE_TOP)/jv/libgdbs/GDBObject.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBMemoryDumpRow.$(O) GDBMemoryDumpRow.$(C) GDBMemoryDumpRow.$(H): GDBMemoryDumpRow.st $(INCLUDE_TOP)/jv/libgdbs/GDBObject.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBRegister.$(O) GDBRegister.$(C) GDBRegister.$(H): GDBRegister.st $(INCLUDE_TOP)/jv/libgdbs/GDBObject.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)GDBRemoteProcess.$(O) GDBRemoteProcess.$(C) GDBRemoteProcess.$(H): GDBRemoteProcess.st $(INCLUDE_TOP)/jv/libgdbs/GDBProcess.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBStreamOutputEvent.$(O) GDBStreamOutputEvent.$(C) GDBStreamOutputEvent.$(H): GDBStreamOutputEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBThreadGroupTypeProcess.$(O) GDBThreadGroupTypeProcess.$(C) GDBThreadGroupTypeProcess.$(H): GDBThreadGroupTypeProcess.st $(INCLUDE_TOP)/jv/libgdbs/GDBThreadGroupType.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBThreadInfo.$(O) GDBThreadInfo.$(C) GDBThreadInfo.$(H): GDBThreadInfo.st $(INCLUDE_TOP)/jv/libgdbs/GDBObject.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -182,9 +188,7 @@
$(OUTDIR)GDBThreadStateStopped.$(O) GDBThreadStateStopped.$(C) GDBThreadStateStopped.$(H): GDBThreadStateStopped.st $(INCLUDE_TOP)/jv/libgdbs/GDBThreadState.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBThreadStateTerminated.$(O) GDBThreadStateTerminated.$(C) GDBThreadStateTerminated.$(H): GDBThreadStateTerminated.st $(INCLUDE_TOP)/jv/libgdbs/GDBThreadState.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBThreadStateUnknown.$(O) GDBThreadStateUnknown.$(C) GDBThreadStateUnknown.$(H): GDBThreadStateUnknown.st $(INCLUDE_TOP)/jv/libgdbs/GDBThreadState.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)GDBUnixProcess.$(O) GDBUnixProcess.$(C) GDBUnixProcess.$(H): GDBUnixProcess.st $(INCLUDE_TOP)/jv/libgdbs/GDBProcess.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBUnsupportedFeatureError.$(O) GDBUnsupportedFeatureError.$(C) GDBUnsupportedFeatureError.$(H): GDBUnsupportedFeatureError.st $(INCLUDE_TOP)/jv/libgdbs/GDBError.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)GDBWindowsProcess.$(O) GDBWindowsProcess.$(C) GDBWindowsProcess.$(H): GDBWindowsProcess.st $(INCLUDE_TOP)/jv/libgdbs/GDBDebugFlags.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBProcess.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBBreakpoint.$(O) GDBBreakpoint.$(C) GDBBreakpoint.$(H): GDBBreakpoint.st $(INCLUDE_TOP)/jv/libgdbs/GDBDebuggerObject.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBObject.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBConsoleOutputEvent.$(O) GDBConsoleOutputEvent.$(C) GDBConsoleOutputEvent.$(H): GDBConsoleOutputEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBStreamOutputEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBEventSetEvent.$(O) GDBEventSetEvent.$(C) GDBEventSetEvent.$(H): GDBEventSetEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBInternalEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -306,6 +310,8 @@
$(OUTDIR)GDBNotificationEvent.$(O) GDBNotificationEvent.$(C) GDBNotificationEvent.$(H): GDBNotificationEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBAsyncEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBRegisterWithValue.$(O) GDBRegisterWithValue.$(C) GDBRegisterWithValue.$(H): GDBRegisterWithValue.st $(INCLUDE_TOP)/jv/libgdbs/GDBDebuggerObject.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBObject.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBSelectedFrameChangedEvent.$(O) GDBSelectedFrameChangedEvent.$(C) GDBSelectedFrameChangedEvent.$(H): GDBSelectedFrameChangedEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBInternalEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)GDBStXUnixProcess.$(O) GDBStXUnixProcess.$(C) GDBStXUnixProcess.$(H): GDBStXUnixProcess.st $(INCLUDE_TOP)/jv/libgdbs/GDBLocalProcess.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBProcess.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)GDBStXWindowsProcess.$(O) GDBStXWindowsProcess.$(C) GDBStXWindowsProcess.$(H): GDBStXWindowsProcess.st $(INCLUDE_TOP)/jv/libgdbs/GDBDebugFlags.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBLocalProcess.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBProcess.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBStatusEvent.$(O) GDBStatusEvent.$(C) GDBStatusEvent.$(H): GDBStatusEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBAsyncEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBTargetOutputEvent.$(O) GDBTargetOutputEvent.$(C) GDBTargetOutputEvent.$(H): GDBTargetOutputEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBStreamOutputEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBThread.$(O) GDBThread.$(C) GDBThread.$(H): GDBThread.st $(INCLUDE_TOP)/jv/libgdbs/GDBDebuggerObject.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBObject.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -324,6 +330,8 @@
$(OUTDIR)GDBLibraryUnloadedEvent.$(O) GDBLibraryUnloadedEvent.$(C) GDBLibraryUnloadedEvent.$(H): GDBLibraryUnloadedEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBAsyncEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBNotificationEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBRunningEvent.$(O) GDBRunningEvent.$(C) GDBRunningEvent.$(H): GDBRunningEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBAsyncEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBExecutionEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBStoppedEvent.$(O) GDBStoppedEvent.$(C) GDBStoppedEvent.$(H): GDBStoppedEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBAsyncEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBExecutionEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)GDBTargetConnectedEvent.$(O) GDBTargetConnectedEvent.$(C) GDBTargetConnectedEvent.$(H): GDBTargetConnectedEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBAsyncEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBNotificationEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)GDBTargetDisonnectedEvent.$(O) GDBTargetDisonnectedEvent.$(C) GDBTargetDisonnectedEvent.$(H): GDBTargetDisonnectedEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBAsyncEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBNotificationEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBThreadEvent.$(O) GDBThreadEvent.$(C) GDBThreadEvent.$(H): GDBThreadEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBAsyncEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBNotificationEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBThreadGroupEvent.$(O) GDBThreadGroupEvent.$(C) GDBThreadGroupEvent.$(H): GDBThreadGroupEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBAsyncEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBNotificationEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBThreadSelectedEvent.$(O) GDBThreadSelectedEvent.$(C) GDBThreadSelectedEvent.$(H): GDBThreadSelectedEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBAsyncEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBNotificationEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
--- a/Make.spec Thu Oct 11 09:55:43 2018 +0200
+++ b/Make.spec Sat Oct 20 07:48:11 2018 +0100
@@ -93,12 +93,14 @@
GDBDebuggerObject \
GDBInternalEvent \
GDBInvalidObjectError \
+ GDBLocalProcess \
GDBMICommand \
GDBMIParser \
GDBMITracer \
GDBMemoryDump \
GDBMemoryDumpRow \
GDBRegister \
+ GDBRemoteProcess \
GDBStreamOutputEvent \
GDBThreadGroupTypeProcess \
GDBThreadInfo \
@@ -106,9 +108,7 @@
GDBThreadStateStopped \
GDBThreadStateTerminated \
GDBThreadStateUnknown \
- GDBUnixProcess \
GDBUnsupportedFeatureError \
- GDBWindowsProcess \
GDBBreakpoint \
GDBConsoleOutputEvent \
GDBEventSetEvent \
@@ -230,6 +230,8 @@
GDBNotificationEvent \
GDBRegisterWithValue \
GDBSelectedFrameChangedEvent \
+ GDBStXUnixProcess \
+ GDBStXWindowsProcess \
GDBStatusEvent \
GDBTargetOutputEvent \
GDBThread \
@@ -248,6 +250,8 @@
GDBLibraryUnloadedEvent \
GDBRunningEvent \
GDBStoppedEvent \
+ GDBTargetConnectedEvent \
+ GDBTargetDisonnectedEvent \
GDBThreadEvent \
GDBThreadGroupEvent \
GDBThreadSelectedEvent \
@@ -305,12 +309,14 @@
$(OUTDIR)GDBDebuggerObject.$(O) \
$(OUTDIR)GDBInternalEvent.$(O) \
$(OUTDIR)GDBInvalidObjectError.$(O) \
+ $(OUTDIR)GDBLocalProcess.$(O) \
$(OUTDIR)GDBMICommand.$(O) \
$(OUTDIR)GDBMIParser.$(O) \
$(OUTDIR)GDBMITracer.$(O) \
$(OUTDIR)GDBMemoryDump.$(O) \
$(OUTDIR)GDBMemoryDumpRow.$(O) \
$(OUTDIR)GDBRegister.$(O) \
+ $(OUTDIR)GDBRemoteProcess.$(O) \
$(OUTDIR)GDBStreamOutputEvent.$(O) \
$(OUTDIR)GDBThreadGroupTypeProcess.$(O) \
$(OUTDIR)GDBThreadInfo.$(O) \
@@ -318,9 +324,7 @@
$(OUTDIR)GDBThreadStateStopped.$(O) \
$(OUTDIR)GDBThreadStateTerminated.$(O) \
$(OUTDIR)GDBThreadStateUnknown.$(O) \
- $(OUTDIR)GDBUnixProcess.$(O) \
$(OUTDIR)GDBUnsupportedFeatureError.$(O) \
- $(OUTDIR)GDBWindowsProcess.$(O) \
$(OUTDIR)GDBBreakpoint.$(O) \
$(OUTDIR)GDBConsoleOutputEvent.$(O) \
$(OUTDIR)GDBEventSetEvent.$(O) \
@@ -442,6 +446,8 @@
$(OUTDIR)GDBNotificationEvent.$(O) \
$(OUTDIR)GDBRegisterWithValue.$(O) \
$(OUTDIR)GDBSelectedFrameChangedEvent.$(O) \
+ $(OUTDIR)GDBStXUnixProcess.$(O) \
+ $(OUTDIR)GDBStXWindowsProcess.$(O) \
$(OUTDIR)GDBStatusEvent.$(O) \
$(OUTDIR)GDBTargetOutputEvent.$(O) \
$(OUTDIR)GDBThread.$(O) \
@@ -460,6 +466,8 @@
$(OUTDIR)GDBLibraryUnloadedEvent.$(O) \
$(OUTDIR)GDBRunningEvent.$(O) \
$(OUTDIR)GDBStoppedEvent.$(O) \
+ $(OUTDIR)GDBTargetConnectedEvent.$(O) \
+ $(OUTDIR)GDBTargetDisonnectedEvent.$(O) \
$(OUTDIR)GDBThreadEvent.$(O) \
$(OUTDIR)GDBThreadGroupEvent.$(O) \
$(OUTDIR)GDBThreadSelectedEvent.$(O) \
--- a/README.md Thu Oct 11 09:55:43 2018 +0200
+++ b/README.md Sat Oct 20 07:48:11 2018 +0100
@@ -1,24 +1,29 @@
# libgdbs
-*libgdbs* is a library providing smalltalk interface for GDB.
+*libgdbs* is a library providing smalltalk interface for GDB.
## Features
* event-based interface
* convenient API to inspect and query current state of a debugee
* support for custom disassembler allowing for custom code analysis
-
+
## Building from Source
-*libgsbs* is a part of [Smalltalk/X jv-branch][3] since version 8.0.0. To
-build *libgsbs*, just follow instructions how to [build
+*libgsbs* is a part of [Smalltalk/X jv-branch][3] since version 8.0.0. To
+build *libgsbs*, just follow instructions how to [build
Smalltalk/X jv-branch][6]
+## Prerequisites
+
+As of today, *libgdbs* requires a very recent GDB. Likely you'd need to
+compile a GDB yourself - see [GDB.md][9]
+
## Reporting issues
Use [Smalltalk/X jv-branch issue tracker][6] to [report issues][7] (you may need
to login using your Google account in order to submit an issue). Alternatively,
-send a message to [Smalltalk/X mailing list][8].
+send a message to [Smalltalk/X mailing list][8].
## Author
@@ -26,10 +31,10 @@
## License
-This software is licensed under *GNU LESSER GENERAL PUBLIC LICENSE Version 2.1*.
+This software is licensed under *GNU LESSER GENERAL PUBLIC LICENSE Version 2.1*.
You may find a full license text in `LICENSE.txt`.
-For permissions beyond the scope of this license please contact author at
+For permissions beyond the scope of this license please contact author at
`<jan.vrany [at] fit.cvut.cz>`
[2]: https://www.gnu.org/software/gdb/
@@ -38,4 +43,5 @@
[5]: https://swing.fit.cvut.cz/jenkins/job/stx_jv/lastSuccessfulBuild/
[6]: https://swing.fit.cvut.cz/projects/stx-jv/report/9
[7]: https://swing.fit.cvut.cz/projects/stx-jv/newticket
-[8]: https://groups.google.com/forum/#!forum/stx-jv
\ No newline at end of file
+[8]: https://groups.google.com/forum/#!forum/stx-jv
+[9]: doc/GDB.md
--- a/abbrev.stc Thu Oct 11 09:55:43 2018 +0200
+++ b/abbrev.stc Sat Oct 20 07:48:11 2018 +0100
@@ -43,12 +43,14 @@
GDBDebuggerObject GDBDebuggerObject jv:libgdbs 'GDB-Core' 0
GDBInternalEvent GDBInternalEvent jv:libgdbs 'GDB-Core-Events' 0
GDBInvalidObjectError GDBInvalidObjectError jv:libgdbs 'GDB-Core-Exeptions' 1
+GDBLocalProcess GDBLocalProcess jv:libgdbs 'GDB-Private' 0
GDBMICommand GDBMICommand jv:libgdbs 'GDB-Core-Commands' 0
GDBMIParser GDBMIParser jv:libgdbs 'GDB-Private' 0
GDBMITracer GDBMITracer jv:libgdbs 'GDB-Private-MI Trace' 0
GDBMemoryDump GDBMemoryDump jv:libgdbs 'GDB-Core' 0
GDBMemoryDumpRow GDBMemoryDumpRow jv:libgdbs 'GDB-Core' 0
GDBRegister GDBRegister jv:libgdbs 'GDB-Core' 0
+GDBRemoteProcess GDBRemoteProcess jv:libgdbs 'GDB-Private' 0
GDBStreamOutputEvent GDBStreamOutputEvent jv:libgdbs 'GDB-Core-Events' 0
GDBThreadGroupTypeProcess GDBThreadGroupTypeProcess jv:libgdbs 'GDB-Core' 1
GDBThreadInfo GDBThreadInfo jv:libgdbs 'GDB-Private' 0
@@ -56,9 +58,7 @@
GDBThreadStateStopped GDBThreadStateStopped jv:libgdbs 'GDB-Core' 1
GDBThreadStateTerminated GDBThreadStateTerminated jv:libgdbs 'GDB-Core' 1
GDBThreadStateUnknown GDBThreadStateUnknown jv:libgdbs 'GDB-Core' 1
-GDBUnixProcess GDBUnixProcess jv:libgdbs 'GDB-Private' 0
GDBUnsupportedFeatureError GDBUnsupportedFeatureError jv:libgdbs 'GDB-Core-Exeptions' 1
-GDBWindowsProcess GDBWindowsProcess jv:libgdbs 'GDB-Private' 0
GDBBreakpoint GDBBreakpoint jv:libgdbs 'GDB-Core' 0
GDBConsoleOutputEvent GDBConsoleOutputEvent jv:libgdbs 'GDB-Core-Events' 0
GDBEventSetEvent GDBEventSetEvent jv:libgdbs 'GDB-Core-Events' 0
@@ -180,6 +180,8 @@
GDBNotificationEvent GDBNotificationEvent jv:libgdbs 'GDB-Core-Events' 0
GDBRegisterWithValue GDBRegisterWithValue jv:libgdbs 'GDB-Core' 0
GDBSelectedFrameChangedEvent GDBSelectedFrameChangedEvent jv:libgdbs 'GDB-Core-Events' 0
+GDBStXUnixProcess GDBStXUnixProcess jv:libgdbs 'GDB-Private' 0
+GDBStXWindowsProcess GDBStXWindowsProcess jv:libgdbs 'GDB-Private' 0
GDBStatusEvent GDBStatusEvent jv:libgdbs 'GDB-Core-Events' 0
GDBTargetOutputEvent GDBTargetOutputEvent jv:libgdbs 'GDB-Core-Events' 0
GDBThread GDBThread jv:libgdbs 'GDB-Core' 0
@@ -198,6 +200,8 @@
GDBLibraryUnloadedEvent GDBLibraryUnloadedEvent jv:libgdbs 'GDB-Core-Events' 0
GDBRunningEvent GDBRunningEvent jv:libgdbs 'GDB-Core-Events' 0
GDBStoppedEvent GDBStoppedEvent jv:libgdbs 'GDB-Core-Events' 0
+GDBTargetConnectedEvent GDBTargetConnectedEvent jv:libgdbs 'GDB-Core-Events' 0
+GDBTargetDisonnectedEvent GDBTargetDisonnectedEvent jv:libgdbs 'GDB-Core-Events' 0
GDBThreadEvent GDBThreadEvent jv:libgdbs 'GDB-Core-Events' 0
GDBThreadGroupEvent GDBThreadGroupEvent jv:libgdbs 'GDB-Core-Events' 0
GDBThreadSelectedEvent GDBThreadSelectedEvent jv:libgdbs 'GDB-Core-Events' 0
--- a/bc.mak Thu Oct 11 09:55:43 2018 +0200
+++ b/bc.mak Sat Oct 20 07:48:11 2018 +0100
@@ -35,7 +35,7 @@
-LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\goodies\announcements -I$(INCLUDE_TOP)\stx\goodies\magritte -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libbasic2 -I$(INCLUDE_TOP)\stx\libtool -I$(INCLUDE_TOP)\stx\libview2 -I$(INCLUDE_TOP)\stx\libwidg
+LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\goodies\announcements -I$(INCLUDE_TOP)\stx\goodies\magritte -I$(INCLUDE_TOP)\stx\goodies\refactoryBrowser\lint -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libbasic2 -I$(INCLUDE_TOP)\stx\libtool -I$(INCLUDE_TOP)\stx\libview2 -I$(INCLUDE_TOP)\stx\libwidg
LOCALDEFINES=
STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES) -varPrefix=$(LIBNAME)
@@ -53,10 +53,14 @@
prereq:
pushd ..\..\stx\libbasic & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\..\stx\goodies\announcements & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ pushd ..\..\stx\goodies\refactoryBrowser\helpers & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ pushd ..\..\stx\goodies\refactoryBrowser\parser & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\..\stx\libbasic2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\..\stx\libview & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\..\stx\libview2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ pushd ..\..\stx\goodies\refactoryBrowser\browser & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\..\stx\libwidg & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ pushd ..\..\stx\goodies\refactoryBrowser\lint & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\..\stx\goodies\magritte & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
@@ -116,12 +120,14 @@
$(OUTDIR)GDBDebuggerObject.$(O) GDBDebuggerObject.$(C) GDBDebuggerObject.$(H): GDBDebuggerObject.st $(INCLUDE_TOP)\jv\libgdbs\GDBObject.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBInternalEvent.$(O) GDBInternalEvent.$(C) GDBInternalEvent.$(H): GDBInternalEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBInvalidObjectError.$(O) GDBInvalidObjectError.$(C) GDBInvalidObjectError.$(H): GDBInvalidObjectError.st $(INCLUDE_TOP)\jv\libgdbs\GDBError.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)GDBLocalProcess.$(O) GDBLocalProcess.$(C) GDBLocalProcess.$(H): GDBLocalProcess.st $(INCLUDE_TOP)\jv\libgdbs\GDBProcess.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBMICommand.$(O) GDBMICommand.$(C) GDBMICommand.$(H): GDBMICommand.st $(INCLUDE_TOP)\jv\libgdbs\GDBCommand.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBMIParser.$(O) GDBMIParser.$(C) GDBMIParser.$(H): GDBMIParser.st $(INCLUDE_TOP)\jv\libgdbs\GDBCommandStatus.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBMITracer.$(O) GDBMITracer.$(C) GDBMITracer.$(H): GDBMITracer.st $(INCLUDE_TOP)\jv\libgdbs\GDBDebugFlags.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBMemoryDump.$(O) GDBMemoryDump.$(C) GDBMemoryDump.$(H): GDBMemoryDump.st $(INCLUDE_TOP)\jv\libgdbs\GDBObject.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBMemoryDumpRow.$(O) GDBMemoryDumpRow.$(C) GDBMemoryDumpRow.$(H): GDBMemoryDumpRow.st $(INCLUDE_TOP)\jv\libgdbs\GDBObject.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBRegister.$(O) GDBRegister.$(C) GDBRegister.$(H): GDBRegister.st $(INCLUDE_TOP)\jv\libgdbs\GDBObject.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)GDBRemoteProcess.$(O) GDBRemoteProcess.$(C) GDBRemoteProcess.$(H): GDBRemoteProcess.st $(INCLUDE_TOP)\jv\libgdbs\GDBProcess.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBStreamOutputEvent.$(O) GDBStreamOutputEvent.$(C) GDBStreamOutputEvent.$(H): GDBStreamOutputEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBThreadGroupTypeProcess.$(O) GDBThreadGroupTypeProcess.$(C) GDBThreadGroupTypeProcess.$(H): GDBThreadGroupTypeProcess.st $(INCLUDE_TOP)\jv\libgdbs\GDBThreadGroupType.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBThreadInfo.$(O) GDBThreadInfo.$(C) GDBThreadInfo.$(H): GDBThreadInfo.st $(INCLUDE_TOP)\jv\libgdbs\GDBObject.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -129,9 +135,7 @@
$(OUTDIR)GDBThreadStateStopped.$(O) GDBThreadStateStopped.$(C) GDBThreadStateStopped.$(H): GDBThreadStateStopped.st $(INCLUDE_TOP)\jv\libgdbs\GDBThreadState.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBThreadStateTerminated.$(O) GDBThreadStateTerminated.$(C) GDBThreadStateTerminated.$(H): GDBThreadStateTerminated.st $(INCLUDE_TOP)\jv\libgdbs\GDBThreadState.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBThreadStateUnknown.$(O) GDBThreadStateUnknown.$(C) GDBThreadStateUnknown.$(H): GDBThreadStateUnknown.st $(INCLUDE_TOP)\jv\libgdbs\GDBThreadState.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)GDBUnixProcess.$(O) GDBUnixProcess.$(C) GDBUnixProcess.$(H): GDBUnixProcess.st $(INCLUDE_TOP)\jv\libgdbs\GDBProcess.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBUnsupportedFeatureError.$(O) GDBUnsupportedFeatureError.$(C) GDBUnsupportedFeatureError.$(H): GDBUnsupportedFeatureError.st $(INCLUDE_TOP)\jv\libgdbs\GDBError.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)GDBWindowsProcess.$(O) GDBWindowsProcess.$(C) GDBWindowsProcess.$(H): GDBWindowsProcess.st $(INCLUDE_TOP)\jv\libgdbs\GDBDebugFlags.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBProcess.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBBreakpoint.$(O) GDBBreakpoint.$(C) GDBBreakpoint.$(H): GDBBreakpoint.st $(INCLUDE_TOP)\jv\libgdbs\GDBDebuggerObject.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBObject.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBConsoleOutputEvent.$(O) GDBConsoleOutputEvent.$(C) GDBConsoleOutputEvent.$(H): GDBConsoleOutputEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBStreamOutputEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBEventSetEvent.$(O) GDBEventSetEvent.$(C) GDBEventSetEvent.$(H): GDBEventSetEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBInternalEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -253,6 +257,8 @@
$(OUTDIR)GDBNotificationEvent.$(O) GDBNotificationEvent.$(C) GDBNotificationEvent.$(H): GDBNotificationEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBAsyncEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBRegisterWithValue.$(O) GDBRegisterWithValue.$(C) GDBRegisterWithValue.$(H): GDBRegisterWithValue.st $(INCLUDE_TOP)\jv\libgdbs\GDBDebuggerObject.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBObject.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBSelectedFrameChangedEvent.$(O) GDBSelectedFrameChangedEvent.$(C) GDBSelectedFrameChangedEvent.$(H): GDBSelectedFrameChangedEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBInternalEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)GDBStXUnixProcess.$(O) GDBStXUnixProcess.$(C) GDBStXUnixProcess.$(H): GDBStXUnixProcess.st $(INCLUDE_TOP)\jv\libgdbs\GDBLocalProcess.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBProcess.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)GDBStXWindowsProcess.$(O) GDBStXWindowsProcess.$(C) GDBStXWindowsProcess.$(H): GDBStXWindowsProcess.st $(INCLUDE_TOP)\jv\libgdbs\GDBDebugFlags.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBLocalProcess.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBProcess.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBStatusEvent.$(O) GDBStatusEvent.$(C) GDBStatusEvent.$(H): GDBStatusEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBAsyncEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBTargetOutputEvent.$(O) GDBTargetOutputEvent.$(C) GDBTargetOutputEvent.$(H): GDBTargetOutputEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBStreamOutputEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBThread.$(O) GDBThread.$(C) GDBThread.$(H): GDBThread.st $(INCLUDE_TOP)\jv\libgdbs\GDBDebuggerObject.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBObject.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -271,6 +277,8 @@
$(OUTDIR)GDBLibraryUnloadedEvent.$(O) GDBLibraryUnloadedEvent.$(C) GDBLibraryUnloadedEvent.$(H): GDBLibraryUnloadedEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBAsyncEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBNotificationEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBRunningEvent.$(O) GDBRunningEvent.$(C) GDBRunningEvent.$(H): GDBRunningEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBAsyncEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBExecutionEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBStoppedEvent.$(O) GDBStoppedEvent.$(C) GDBStoppedEvent.$(H): GDBStoppedEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBAsyncEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBExecutionEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)GDBTargetConnectedEvent.$(O) GDBTargetConnectedEvent.$(C) GDBTargetConnectedEvent.$(H): GDBTargetConnectedEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBAsyncEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBNotificationEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)GDBTargetDisonnectedEvent.$(O) GDBTargetDisonnectedEvent.$(C) GDBTargetDisonnectedEvent.$(H): GDBTargetDisonnectedEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBAsyncEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBNotificationEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBThreadEvent.$(O) GDBThreadEvent.$(C) GDBThreadEvent.$(H): GDBThreadEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBAsyncEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBNotificationEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBThreadGroupEvent.$(O) GDBThreadGroupEvent.$(C) GDBThreadGroupEvent.$(H): GDBThreadGroupEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBAsyncEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBNotificationEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBThreadSelectedEvent.$(O) GDBThreadSelectedEvent.$(C) GDBThreadSelectedEvent.$(H): GDBThreadSelectedEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBAsyncEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBNotificationEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
--- a/jv_libgdbs.st Thu Oct 11 09:55:43 2018 +0200
+++ b/jv_libgdbs.st Sat Oct 20 07:48:11 2018 +0100
@@ -158,12 +158,14 @@
GDBDebuggerObject
GDBInternalEvent
GDBInvalidObjectError
+ GDBLocalProcess
GDBMICommand
GDBMIParser
GDBMITracer
GDBMemoryDump
GDBMemoryDumpRow
GDBRegister
+ GDBRemoteProcess
GDBStreamOutputEvent
GDBThreadGroupTypeProcess
GDBThreadInfo
@@ -171,9 +173,7 @@
GDBThreadStateStopped
GDBThreadStateTerminated
GDBThreadStateUnknown
- GDBUnixProcess
GDBUnsupportedFeatureError
- GDBWindowsProcess
GDBBreakpoint
GDBConsoleOutputEvent
GDBEventSetEvent
@@ -295,6 +295,8 @@
GDBNotificationEvent
GDBRegisterWithValue
GDBSelectedFrameChangedEvent
+ GDBStXUnixProcess
+ GDBStXWindowsProcess
GDBStatusEvent
GDBTargetOutputEvent
GDBThread
@@ -313,6 +315,8 @@
GDBLibraryUnloadedEvent
GDBRunningEvent
GDBStoppedEvent
+ GDBTargetConnectedEvent
+ GDBTargetDisonnectedEvent
GDBThreadEvent
GDBThreadGroupEvent
GDBThreadSelectedEvent
--- a/libInit.cc Thu Oct 11 09:55:43 2018 +0200
+++ b/libInit.cc Sat Oct 20 07:48:11 2018 +0100
@@ -58,12 +58,14 @@
extern void _GDBDebuggerObject_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBInternalEvent_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBInvalidObjectError_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _GDBLocalProcess_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBMICommand_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBMIParser_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBMITracer_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBMemoryDump_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBMemoryDumpRow_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBRegister_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _GDBRemoteProcess_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBStreamOutputEvent_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBThreadGroupTypeProcess_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBThreadInfo_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
@@ -71,9 +73,7 @@
extern void _GDBThreadStateStopped_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBThreadStateTerminated_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBThreadStateUnknown_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
-extern void _GDBUnixProcess_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBUnsupportedFeatureError_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
-extern void _GDBWindowsProcess_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBBreakpoint_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBConsoleOutputEvent_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBEventSetEvent_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
@@ -195,6 +195,8 @@
extern void _GDBNotificationEvent_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBRegisterWithValue_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBSelectedFrameChangedEvent_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _GDBStXUnixProcess_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _GDBStXWindowsProcess_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBStatusEvent_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBTargetOutputEvent_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBThread_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
@@ -213,6 +215,8 @@
extern void _GDBLibraryUnloadedEvent_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBRunningEvent_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBStoppedEvent_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _GDBTargetConnectedEvent_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _GDBTargetDisonnectedEvent_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBThreadEvent_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBThreadGroupEvent_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBThreadSelectedEvent_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
@@ -279,12 +283,14 @@
_GDBDebuggerObject_Init(pass,__pRT__,snd);
_GDBInternalEvent_Init(pass,__pRT__,snd);
_GDBInvalidObjectError_Init(pass,__pRT__,snd);
+ _GDBLocalProcess_Init(pass,__pRT__,snd);
_GDBMICommand_Init(pass,__pRT__,snd);
_GDBMIParser_Init(pass,__pRT__,snd);
_GDBMITracer_Init(pass,__pRT__,snd);
_GDBMemoryDump_Init(pass,__pRT__,snd);
_GDBMemoryDumpRow_Init(pass,__pRT__,snd);
_GDBRegister_Init(pass,__pRT__,snd);
+ _GDBRemoteProcess_Init(pass,__pRT__,snd);
_GDBStreamOutputEvent_Init(pass,__pRT__,snd);
_GDBThreadGroupTypeProcess_Init(pass,__pRT__,snd);
_GDBThreadInfo_Init(pass,__pRT__,snd);
@@ -292,9 +298,7 @@
_GDBThreadStateStopped_Init(pass,__pRT__,snd);
_GDBThreadStateTerminated_Init(pass,__pRT__,snd);
_GDBThreadStateUnknown_Init(pass,__pRT__,snd);
- _GDBUnixProcess_Init(pass,__pRT__,snd);
_GDBUnsupportedFeatureError_Init(pass,__pRT__,snd);
- _GDBWindowsProcess_Init(pass,__pRT__,snd);
_GDBBreakpoint_Init(pass,__pRT__,snd);
_GDBConsoleOutputEvent_Init(pass,__pRT__,snd);
_GDBEventSetEvent_Init(pass,__pRT__,snd);
@@ -416,6 +420,8 @@
_GDBNotificationEvent_Init(pass,__pRT__,snd);
_GDBRegisterWithValue_Init(pass,__pRT__,snd);
_GDBSelectedFrameChangedEvent_Init(pass,__pRT__,snd);
+ _GDBStXUnixProcess_Init(pass,__pRT__,snd);
+ _GDBStXWindowsProcess_Init(pass,__pRT__,snd);
_GDBStatusEvent_Init(pass,__pRT__,snd);
_GDBTargetOutputEvent_Init(pass,__pRT__,snd);
_GDBThread_Init(pass,__pRT__,snd);
@@ -434,6 +440,8 @@
_GDBLibraryUnloadedEvent_Init(pass,__pRT__,snd);
_GDBRunningEvent_Init(pass,__pRT__,snd);
_GDBStoppedEvent_Init(pass,__pRT__,snd);
+ _GDBTargetConnectedEvent_Init(pass,__pRT__,snd);
+ _GDBTargetDisonnectedEvent_Init(pass,__pRT__,snd);
_GDBThreadEvent_Init(pass,__pRT__,snd);
_GDBThreadGroupEvent_Init(pass,__pRT__,snd);
_GDBThreadSelectedEvent_Init(pass,__pRT__,snd);
--- a/tests/GDBDebuggerTestCase.st Thu Oct 11 09:55:43 2018 +0200
+++ b/tests/GDBDebuggerTestCase.st Sat Oct 20 07:48:11 2018 +0100
@@ -22,7 +22,7 @@
TestCase subclass:#GDBDebuggerTestCase
instanceVariableNames:'debugger'
- classVariableNames:''
+ classVariableNames:'DebuggerSetupBlock'
poolDictionaries:''
category:'GDB-Core-Tests'
!
@@ -50,6 +50,14 @@
"
! !
+!GDBDebuggerTestCase class methodsFor:'accessing'!
+
+resources
+ ^ Array with: GDBDebuggeesResource
+
+ "Created: / 28-02-2015 / 00:45:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!GDBDebuggerTestCase class methodsFor:'queries'!
isAbstract
@@ -62,41 +70,24 @@
!GDBDebuggerTestCase methodsFor:'running'!
+setUp
+ super setUp.
+ debugger := DebuggerSetupBlock notNil ifTrue:[ DebuggerSetupBlock value ] ifFalse:[ GDBDebugger new ].
+ self assert:(debugger isKindOf: GDBDebugger).
+ self assert: debugger isConnected.
+
+ "Created: / 18-10-2018 / 10:34:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (format): / 19-10-2018 / 09:50:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
tearDown
(debugger notNil and:[ debugger isConnected ]) ifTrue:[
debugger send: 'quit' andWait: false.
].
+ super tearDown.
"Created: / 19-01-2018 / 09:18:42 / jv"
-! !
-
-!GDBDebuggerTestCase methodsFor:'tests - basic'!
-
-test_breakpoints_02
- | |
-
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
-
- debugger executable: GDBDebuggeesResource current binaryFactorial1.
- self assert: debugger breakpoints isEmpty.
-
- debugger send: 'b main'.
- self assert: debugger breakpoints size == 1.
-
- debugger send: 'r' andWaitFor: GDBStoppedEvent.
- self assert: debugger breakpoints size == 1.
-
- debugger send: 'del'.
- self assert: debugger breakpoints isEmpty.
-
- debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
- self assert: debugger breakpoints isEmpty.
-
- debugger send: 'quit' andWait: false.
-
- "Created: / 07-07-2017 / 11:53:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 12-01-2018 / 22:04:46 / jv"
+ "Modified: / 18-10-2018 / 10:34:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!GDBDebuggerTestCase class methodsFor:'documentation'!
--- a/tests/GDBDebuggerTestsR.st Thu Oct 11 09:55:43 2018 +0200
+++ b/tests/GDBDebuggerTestsR.st Sat Oct 20 07:48:11 2018 +0100
@@ -52,7 +52,31 @@
documentation
"
- Tests for GDBDebugger (using real test programs)
+ Tests for GDBDebugger API.
+
+ # Custom Debugger Setup
+
+ By default, this tests spawns a default, locally run
+ debugger for each test (see GDBDebugger >> new). To customize
+ the debugger setup, set GDBDebuggerTestsR >> debuggerSetupBlock
+ returning a GDBDebugger instance with all the necessary setup
+ done. For example, to use externally run GDB over TCP socket:
+
+ * First, run 'GDB/MI server' (don't confuse with `gdbservver`!!)
+ run (in terminal):
+
+ socat TCP4-LISTEN:1234,FORK EXEC:'gdb -i mi2'
+
+ *
+
+
+
+
+
+
+
+
+
[author:]
Jan Vrany <jan.vrany@fit.cvut.cz>
@@ -79,9 +103,6 @@
test_02
| inferior1 thread1 frame1 frame2 seqNo1 seqNo2 |
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
-
debugger executable: GDBDebuggeesResource current binaryFactorial1.
debugger send: 'b factorial'.
@@ -127,8 +148,8 @@
debugger send: 'quit' andWait: false.
"Created: / 28-02-2015 / 00:55:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 12-02-2018 / 22:50:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 19-01-2018 / 09:23:24 / jv"
+ "Modified: / 18-10-2018 / 10:54:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_03
@@ -136,9 +157,6 @@
self skipIf: OperatingSystem isMSWINDOWSlike description: 'Skipped since we cannot interact with inferor on Windows (no TTY support)'.
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
-
debugger executable: GDBDebuggeesResource current binaryPressAnyKey.
debugger send: (GDBMI_exec_run new).
@@ -160,14 +178,13 @@
debugger send: 'quit' andWait: false
"Created: / 08-03-2015 / 07:42:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 01-06-2017 / 22:30:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 12-01-2018 / 14:53:19 / jv"
+ "Modified: / 18-10-2018 / 10:55:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_basic_01
| timeToExit eventPumpProcess eventDispatchProcess|
- debugger := GDBDebugger new.
timeToExit := 0.
eventPumpProcess := (debugger instVarNamed: #connection) instVarNamed: #eventPumpProcess.
eventDispatchProcess := (debugger instVarNamed: #connection) instVarNamed: #eventDispatchProcess.
@@ -186,16 +203,11 @@
self assert: eventDispatchProcess isDead.
"Created: / 24-06-2014 / 09:06:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 31-05-2017 / 22:42:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 12-01-2018 / 15:29:08 / jv"
+ "Modified: / 18-10-2018 / 10:55:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_breakpoints_01a
- | |
-
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
-
debugger executable: GDBDebuggeesResource current binaryFactorial1.
self assert: debugger breakpoints isEmpty.
@@ -216,14 +228,10 @@
debugger send: 'quit' andWait: false.
"Created: / 07-07-2017 / 12:25:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:55:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_breakpoints_01b
- | |
-
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
-
debugger executable: GDBDebuggeesResource current binaryFactorial1.
self assert: debugger breakpoints isEmpty.
@@ -244,14 +252,10 @@
debugger send: 'quit' andWait: false.
"Created: / 07-07-2017 / 12:27:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (format): / 18-10-2018 / 10:55:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_breakpoints_01c
- | |
-
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
-
debugger executable: GDBDebuggeesResource current binaryFactorial1.
self assert: debugger breakpoints isEmpty.
@@ -272,15 +276,36 @@
debugger send: 'quit' andWait: false.
"Created: / 07-07-2017 / 12:34:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:55:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_breakpoints_02
+ debugger executable: GDBDebuggeesResource current binaryFactorial1.
+ self assert: debugger breakpoints isEmpty.
+
+ debugger send: 'b main'.
+ self assert: debugger breakpoints size == 1.
+
+ debugger send: 'r' andWaitFor: GDBStoppedEvent.
+ self assert: debugger breakpoints size == 1.
+
+ debugger send: 'del'.
+ self assert: debugger breakpoints isEmpty.
+
+ debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
+ self assert: debugger breakpoints isEmpty.
+
+ debugger send: 'quit' andWait: false.
+
+ "Created: / 07-07-2017 / 11:53:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 12-01-2018 / 22:04:46 / jv"
+ "Modified: / 18-10-2018 / 10:55:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_breakpoints_03a
self skipIf: OperatingSystem isMSWINDOWSlike description: 'Skipped since we don;t have separate console TTY (no TTY support)'.
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
-
debugger executable: GDBDebuggeesResource current binaryFactorial1.
self assert: debugger breakpoints isEmpty.
@@ -303,14 +328,11 @@
debugger send: 'quit' andWait: false.
"Created: / 10-07-2017 / 22:05:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 11-07-2017 / 11:06:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 12-01-2018 / 14:57:37 / jv"
+ "Modified: / 18-10-2018 / 10:55:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_breakpoints_04a
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
-
debugger executable: GDBDebuggeesResource current binaryFactorial1.
self assert: debugger breakpoints isEmpty.
@@ -332,7 +354,7 @@
debugger send: 'quit' andWait: false.
"Created: / 11-07-2017 / 20:35:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified (format): / 11-07-2017 / 23:31:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:55:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_breakpoints_05a
@@ -349,9 +371,6 @@
"
self skipIf: true description: 'Known to fail due to a bug in GDB'.
- debugger := GDBDebugger new.
-
- self assert: debugger isConnected.
debugger executable: GDBDebuggeesResource current binaryBreakpoints1.
self assert: debugger breakpoints isEmpty.
@@ -388,15 +407,12 @@
debugger send: 'quit' andWait: false.
"Created: / 18-05-2018 / 10:52:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 23-05-2018 / 10:49:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:56:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_directories
| directories current |
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
-
directories := debugger directories.
self assert: directories isArray.
self assert: directories notEmpty.
@@ -416,12 +432,12 @@
"Created: / 09-03-2018 / 12:28:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 03-04-2018 / 21:08:26 / jv"
+ "Modified: / 18-10-2018 / 10:56:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_disassembly_01
| asm |
- debugger := GDBDebugger new.
debugger executable: GDBDebuggeesResource current binaryFactorial1.
debugger send: 'r' andWaitFor: GDBThreadGroupExitedEvent.
@@ -433,12 +449,11 @@
debugger send: 'quit' andWait: false.
"Created: / 22-06-2018 / 11:52:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:56:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_features
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
self assert: debugger features isArray.
self assert: debugger features notEmpty.
self assert: (debugger hasFeature: debugger features anyOne).
@@ -448,13 +463,12 @@
debugger send: 'quit' andWait: false.
"Created: / 07-02-2018 / 10:56:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:56:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_registers_01a
| stack rax rip rsp raxValue1 ripValue1 rspValue1 raxValue2 ripValue2 rspValue2 |
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
debugger executable: GDBDebuggeesResource current binaryFactorial1.
debugger send: 'b factorial'.
debugger send: 'r' andWaitFor: GDBStoppedEvent.
@@ -500,7 +514,7 @@
debugger send: 'quit' andWait: false.
"Created: / 27-09-2018 / 10:45:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 27-09-2018 / 16:02:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:56:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_stack_01a
@@ -509,8 +523,6 @@
| stack1 stack2 |
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
debugger executable: GDBDebuggeesResource current binaryFactorial1.
debugger send: 'b factorial'.
debugger send: 'r' andWaitFor: GDBStoppedEvent.
@@ -543,6 +555,7 @@
debugger send: 'quit' andWait: false.
"Created: / 06-08-2018 / 15:06:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:56:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_stack_01b
@@ -551,8 +564,6 @@
| stack1 pc1 stack2 pc2 |
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
debugger executable: GDBDebuggeesResource current binaryFactorial1.
debugger send: 'b factorial'.
debugger send: 'r' andWaitFor: GDBStoppedEvent.
@@ -573,13 +584,12 @@
debugger send: 'quit' andWait: false.
"Created: / 06-08-2018 / 15:07:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:57:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_stack_02
| stack1 stack2 |
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
debugger executable: GDBDebuggeesResource current binaryVariables1.
debugger send: 'b set_data_i'.
debugger send: 'r' andWaitFor: GDBStoppedEvent.
@@ -596,7 +606,7 @@
debugger send: 'quit' andWait: false.
"Created: / 12-02-2018 / 21:46:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 15-02-2018 / 09:16:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:57:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_stack_03
@@ -605,8 +615,6 @@
| stack2 selection |
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
debugger executable: GDBDebuggeesResource current binaryFactorial1.
debugger send: 'b factorial'.
debugger send: 'r' andWaitFor: GDBStoppedEvent.
@@ -631,12 +639,12 @@
self assert: selection frame == stack2 third.
"Created: / 30-07-2018 / 07:07:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:57:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_variables_01
| thread frame variables d |
- debugger := GDBDebugger new.
debugger executable: GDBDebuggeesResource current binaryVariables1.
debugger send: 'b main'.
@@ -688,7 +696,7 @@
debugger send: 'quit' andWait: false.
"Created: / 30-01-2018 / 10:27:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 13-02-2018 / 22:02:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:57:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_variables_02
@@ -698,7 +706,6 @@
"
| variables1 variables2 |
- debugger := GDBDebugger new.
debugger executable: GDBDebuggeesResource current binaryVariables1.
debugger send: 'b main'.
@@ -719,6 +726,7 @@
debugger send: 'quit' andWait: false.
"Created: / 01-02-2018 / 21:45:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:58:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_variables_03
@@ -727,7 +735,6 @@
"
| variables d d_i |
- debugger := GDBDebugger new.
debugger executable: GDBDebuggeesResource current binaryVariables1.
debugger send: 'b set_data_i'.
@@ -764,7 +771,7 @@
debugger send: 'quit' andWait: false.
"Created: / 01-02-2018 / 21:57:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 12-02-2018 / 22:36:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:58:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_variables_04
@@ -774,7 +781,6 @@
"
| variables d d_as_i_a events seqNo1 seqNo2 |
- debugger := GDBDebugger new.
events := OrderedCollection new.
debugger announcer when: GDBEvent send: #add: to: events.
@@ -809,7 +815,7 @@
debugger send: 'quit' andWait: false.
"Created: / 04-02-2018 / 22:04:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 13-02-2018 / 10:15:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:58:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_variables_05
@@ -819,7 +825,6 @@
"
| variables d |
- debugger := GDBDebugger new.
debugger executable: GDBDebuggeesResource current binaryVariables1.
debugger send: 'b set_data_i'.
@@ -850,6 +855,7 @@
debugger send: 'quit' andWait: false.
"Created: / 12-02-2018 / 21:34:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:58:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_variables_06
@@ -858,7 +864,6 @@
"
| variables d1 d_i1 d_i2 |
- debugger := GDBDebugger new.
debugger executable: GDBDebuggeesResource current binaryVariables1.
debugger send: 'b set_data_i'.
@@ -903,14 +908,12 @@
debugger send: 'quit' andWait: false.
"Created: / 13-02-2018 / 22:27:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:58:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_variables_07
| stack v1 v2 v3 |
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
-
debugger executable: GDBDebuggeesResource current binaryFactorial1.
self assert: debugger breakpoints isEmpty.
@@ -941,6 +944,7 @@
debugger send: 'quit' andWait: false.
"Created: / 20-03-2018 / 22:32:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:58:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_variables_08
@@ -949,11 +953,6 @@
"
| c1 c1_cdr c1_cdr_cdr |
-
-
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
-
debugger executable: GDBDebuggeesResource current binaryPyVarobj.
self assert: debugger breakpoints isEmpty.
@@ -982,7 +981,7 @@
debugger send: 'quit' andWait: false.
"Created: / 01-06-2018 / 16:27:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified (comment): / 04-06-2018 / 11:02:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:58:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_variables_09
@@ -991,9 +990,6 @@
"
| c1 c1_cdr c1_cdr_d c1_cdr_d_cdr c1_cdr_d_cdr_d |
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
-
debugger executable: GDBDebuggeesResource current binaryPyVarobj.
self assert: debugger breakpoints isEmpty.
@@ -1028,6 +1024,7 @@
debugger send: 'quit' andWait: false.
"Created: / 04-06-2018 / 15:08:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:58:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_variables_10a
@@ -1036,9 +1033,6 @@
"
| stack |
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
-
debugger executable: GDBDebuggeesResource current binaryFactorial1.
self assert: debugger breakpoints isEmpty.
@@ -1063,12 +1057,6 @@
debugger send: 'quit' andWait: false.
"Created: / 05-07-2018 / 11:48:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:59:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
-!GDBDebuggerTestsR class methodsFor:'documentation'!
-
-version_HG
-
- ^ '$Changeset: <not expanded> $'
-! !
-
--- a/tests/Make.proto Thu Oct 11 09:55:43 2018 +0200
+++ b/tests/Make.proto Sat Oct 20 07:48:11 2018 +0100
@@ -114,11 +114,15 @@
prereq:
cd $(TOP)/libbasic && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
cd $(TOP)/goodies/announcements && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ cd $(TOP)/goodies/refactoryBrowser/helpers && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ cd $(TOP)/goodies/refactoryBrowser/parser && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
cd $(TOP)/libbasic2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
cd $(TOP)/libview && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
cd $(TOP)/libview2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ cd $(TOP)/goodies/refactoryBrowser/browser && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
cd $(TOP)/goodies/sunit && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
cd $(TOP)/libwidg && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ cd $(TOP)/goodies/refactoryBrowser/lint && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
cd $(TOP)/goodies/magritte && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
cd ../ && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
--- a/tests/bc.mak Thu Oct 11 09:55:43 2018 +0200
+++ b/tests/bc.mak Sat Oct 20 07:48:11 2018 +0100
@@ -53,11 +53,15 @@
prereq:
pushd ..\..\..\stx\libbasic & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\..\..\stx\goodies\announcements & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ pushd ..\..\..\stx\goodies\refactoryBrowser\helpers & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ pushd ..\..\..\stx\goodies\refactoryBrowser\parser & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\..\..\stx\libbasic2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\..\..\stx\libview & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\..\..\stx\libview2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ pushd ..\..\..\stx\goodies\refactoryBrowser\browser & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\..\..\stx\goodies\sunit & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\..\..\stx\libwidg & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ pushd ..\..\..\stx\goodies\refactoryBrowser\lint & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\..\..\stx\goodies\magritte & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd .. & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "