"
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>"
! !